【问题标题】:How to change container view size with animation when embedded view size is changed?更改嵌入式视图大小时如何使用动画更改容器视图大小?
【发布时间】:2019-07-03 08:50:40
【问题描述】:

我正在尝试以下场景。 1.容器有一个嵌入式视图。 2.一旦嵌入视图的高度随着动画而改变, 3. 有了动画,Container的高度也和内嵌视图的高度一样变化了。

我已经尝试过“translatesAutoresizingMaskIntoConstraints = false”

它正在工作.. 更改嵌入式视图大小时会更改容器视图大小。 但是,容器高度在没有动画的情况下更改。

当嵌入式视图大小更新时,是否有任何适当的方法可以通过动画更新容器视图大小?

【问题讨论】:

  • 同样的问题。你找到解决办法了吗?

标签: ios swift animation autolayout containers


【解决方案1】:

您可以删除容器的宽度/高度约束,只保留嵌入式视图的宽度/高度约束。因此,嵌入式视图将设置容器的高度/宽度。 然后你可以动画嵌入视图高度约束和容器高度也将被动画改变。

用户界面如下所示: 黑色是容器,粉色是嵌入式视图

已编辑

如果您的工作不受限制,您可以通过 CGAffineTransform 为您的内容制作动画。如果你缩放你的 containerView,嵌入的视图也会被缩放

代码如下:

UIView.animate(withDuration: 0.3) {
            containerView.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
}

【讨论】:

    【解决方案2】:

    innerViewtop, bottom, leading and trailing constraints 添加到outerView。另外,将height constraint 添加到innerView

    现在为innerView 之类的height constraint 设置动画,

    self.innerViewHeightConstraint.constant = 60.0
    UIView.animate(withDuration: 0.3) {
        self.view.layoutIfNeeded()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多