如何在视图控制器中为 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 约束设置动画?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 自动布局 - xib 中的等高约束

如何在 xib 文件中为约束设置常量

如何在 nib 中为 UIView 应用自动布局?

在集合视图中为单元格设置动画

swift - 在UIScrollView上从xib添加UIView后如何更新约束?

如何使用自动布局在 UIScrollView 中为视图高度设置动画?