【问题标题】: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】:
将innerView 的top, 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()
}