目标:能够为容器视图的框架设置动画,同时它的子视图保持其原始布局&将按比例缩放到其容器视图。
的方案:
UIView.animateWithDuration(0, animations: {
self.bounds = myBounds
}) {(One) in
UIView.animateWithDuration(1, animations: {
self.frame = myFrame
}) {(Two) in
UIView.animateWithDuration(0.5, animations: {
self.frame = origFrame
// self.center = myCenter
}) {(Three) in
UIView.animateWithDuration(0.2, animations: {
self.frame = distantFrame
})
}
}
}
这是原始布局:
我希望成员元素按比例缩放,其容器视图如下:
但是成员元素(一个标签' Hello World!')没有相应调整,因为他们的绿色容器视图动画到左上角的一个正方形:
我如何保留UIView的会员'按照比例布局流行的盛行集装箱视图框架?
注意:这适用于任何类型的成员(UIView,UITextView,...等);简单的位置/布局&转换(枢轴)动画。
答案 0 :(得分:2)
在您的示例中,您有绿色背景视图(BG)和hello世界视图(HW),并且您希望HW按比例缩放到BG。
您可以轻松实现这一目标:
在Xcode(最右上角的图标)和文档大纲(故事板的左下角图标)中打开“工具”窗格
假设HW已经在BG中居,即您已经在容器中水平和垂直设置了HW中心的对齐约束。
现在,在文档大纲中选择BG和HW,然后单击右下角的“Pin”图标。它将提供约束“Equal widths”和“Equal height”。激活两者。
创建这些约束后,在文档大纲中打开其中一个。然后,实用程序窗格将显示具有2个视图和Multiplier字段的Equal Width约束
在“乘数”字段中,您可以输入所选维度的所需比例,例如1:3。这将确定所选尺寸的比例
对于其他方面当然是类似的。当然,您必须更新HW的框架
这是一个例子: