如何在视图控制器中为 xib 约束设置动画?
Posted
技术标签:
【中文标题】如何在视图控制器中为 xib 约束设置动画?【英文标题】:How to animate xib constraints inside a view controller? 【发布时间】:2015-11-20 18:18:06 【问题描述】:我已经构建了一个计数器,当您向上或向下滑动时会显示动画。
所以基本上它是我动画的视图控制器内的一个圆形 UIView
当用户向上或向下滑动时增加偏移量。
它工作得很好,但现在我试图把它放在一个 .Xib 文件中,然后
在视图控制器上加载 Nib。
它不工作,只有标签开始动画,而不是
圆形视图。
如何在视图中为 xib 设置动画
这是我的代码:
````
func handleSwipes(sender:UISwipeGestureRecognizer)
// up or down
if sender.direction == .Up
increment = 1
offset = 10
else
increment = -1
offset = -10
// animate stuff with constraints
inc(increment)
UIView.animateWithDuration(0.18, animations: _ in
self.labelYConstraint.constant = self.offset
self.view.layoutIfNeeded()
self.label.alpha = 1
self.label.textColor = UIColor(red: 52/255.0, green: 52/255.0, blue: 88/255.0, alpha: 1)
self.circleView.filledColor = UIColor(red: 167/255.0, green: 246/255.0, blue: 67/255.0, alpha: 1)
) _ in
UIView.animateWithDuration(0.18, animations: _ in
self.labelYConstraint.constant = 0
self.view.layoutIfNeeded()
self.circleView.layer.backgroundColor = UIColor(red: 211/255.0, green: 211/255.0, blue: 211/255.0, alpha: 0.3).CGColor
self.label.textColor = UIColor.whiteColor()
)
````
第一个按钮是一个 UIView 动画
第二个按钮是嵌入在视图控制器中的 .Xib 文件
【问题讨论】:
“动画 xib”这句话完全没有意义。 你会如何重新提出这个问题?我知道 xib 是一种视图,我只是想明确提出问题。 xib 不是视图。它是一个 xib(一个 nib 文件)。 最好是说:如何为 xib 组件或 xib 约束设置动画? 【参考方案1】:您似乎正在为标签的 Y 约束设置动画。您必须确保为设置整个组的位置的约束设置动画。
一个简单的方法是在 xib 中创建一个透明的子视图并将所有元素放入其中,并创建一个 Y 约束以将该子视图定位在 xib 主视图中。当您为新约束设置动画时,它应该将所有元素一起移动。
如果这有帮助,请告诉我。
【讨论】:
Tks,我会试试的,我会告诉你的。它如何适用于第一个视图动画。我只为标签的 Y 约束设置动画,整个组都被设置了动画。 约束指定每个元素如何对彼此位置的变化作出反应。所以我猜在第一种情况下,约束是不同的,它们将其他元素的位置连接到标签的位置。看看这两种情况的限制,看看有什么不同,尝试一下:) 经过一些试验和错误,我设法找到了解决方案。如果我制作动画( view.frame.origin.y ),我会得到想要的结果。 :)以上是关于如何在视图控制器中为 xib 约束设置动画?的主要内容,如果未能解决你的问题,请参考以下文章