当前位置: 首页 > 知识库问答 >
问题:

如何在UITableViewCell中设置任何UIView的动画?

邹俊友
2023-03-14
let label = UILabel(frame: CGRectMake(20.0, 20.0, 15.0, 15.0))
label.backgroundColor = UIColor.flamingoColor() 

UIView.animateWithDuration(3.0, animations: {
    cell.addSubview(label)
    label.backgroundColor = UIColor.yellowColor()
})

我放在表格视图中的代码:cellForRowAtIndexPath:-

要查看UITableViewCell中的任何动画,应该使用哪种方法或放置哪种类型的动画。我知道我无法设置现有标签的动画,因为这些标签带有约束。

共有1个答案

吕向阳
2023-03-14

首先,您应该移动单元格。将子视图(标签)添加到动画块的外部,并将标签添加到单元格的内容视图中。

回到你的问题上来。无法设置UILabel背景色的动画。不过,您可以在UILabel后面使用大小相同的UIView来实现相同的效果。

为了让UIView在出现时改变颜色,我使用了UITableViewCell子类:

class AnimatedCell : UITableViewCell {
    let animatedView = UIView()

    /*  Setup by adding animatedView to the contentView and setting the 
        animated view's initial frame and colour.
    */

    func animate() {
        UIView.animateWithDuration(3.0) {
            animatedView.backgroundColor = UIColor.redColor() 
        }
    }

然后,在UITableViewController子类中,当显示视图控制器时,将填充UITableView,因此需要使用以下内容设置这些单元格的动画:

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated: Bool)

    for cell in tableView.visibleCells() as! [UITableViewCell] {
        if let animatedCell = cell as? AnimatedCell {
            animatedCell.animate()
        }
    }
}

然后,对于滚动时显示的单元格:

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    if let animatedCell = cell as? AnimatedCell {
        a.animateLabel()
    }
}

此外,您可以使用AutoLayout进行动画处理,您需要更改要进行动画处理的NSLayoutConstraint上的常量。这给出了一个很好的例子:iOS:如何将动画设置为新的autolayout约束(高度)

 类似资料:
  • 在我的人造示例中,我有以下单个视图: 如您所见,它由几个简单的约束组成: 将水平和垂直中心对齐, 高度(设置为常数) 前导空格和尾随空格(设置为常量) 我想要实现的是让这个红色/粉红色的视图从顶部“进来”。传统上,在一个没有约束的世界中,我只需修改,但我不确定在约束世界中如何进行类似操作。 为了重申我的问题,我如何使我的视图从场景开始,并为从顶部飞入的视图设置动画? 我考虑过设置垂直中心约束的动画

  • 关于UITableViewCell高度动画,在堆栈溢出方面有很多类似的问题,但对于新的iOS8自动布局驱动的表视图,这些问题都不起作用。我的问题: 自定义单元格: 注意旋转木马高度限制。这是内容视图的子视图(唯一的子视图)的高度约束。 然后,在“查看我要展开的所有操作”单元上,我的代码: 如您所见,我尝试使用这个很好的旧解决方案: 您可以在选中UITableViewCell时设置高度更改的动画吗?

  • 我有一段代码,可以为UIImage的位置设置动画,但是过渡没有设置动画,而是位置会立即改变。我不认为这是一个代码问题,因为相同的代码在另一个项目上工作,但我无法找出其他错误。 alpha会动画,而y位置不会。我的约束如下所示 编辑:我正在使用针对8.4的Xcode-Beta 7

  • I'hv 4s。所有这些都在父中。父有它的固定高度约束,即240。但是我必须将它最小化到190iPhone4。 子视图的高度是固定的。现在我的问题是,如何在父视图中设置所有4个UIView,使其具有相同的间距,以便如果我只更改其父视图的高度,子视图可以自动适应其父视图中的相同间距。 提前非常感谢。 父视图约束: 领先0 尾随0 顶部到它的父母X 底部到它的父母Y 高度240(我必须在iPhone4

  • 在我的UITableViewCell中,我有两个UIView堆叠在一起。让我们称之为顶部和底部。 俯视图对superview具有前导、尾随和顶部约束。它的高度约束为20。 底部视图对superview具有前导、尾随和底部约束。它的高度约束为20。 顶部和底部具有垂直约束。 以编程方式“隐藏”底部视图(并使顶部视图接触超级视图的底部)的最简单方法是什么?我不想再创建任何约束,因为我确实在情节提要中设

  • 问题内容: 我想制作一个UIImageView动画。我声明了NSLayoutConstraintin viewDidLoad并使用了以下代码: 为什么我的图像不动? 问题答案: 在您按下时viewDidLoad,约束引擎尚未 应用,并且视图的起始位置尚未建立。 因此,可以随时在中添加原始约束viewDidLoad,但是您 需要将推迟到animateWithDuration该过程的后面(例如 vie