如何缩放容器UIView的子视图'布局/大小我为容器UIView设置动画?

时间:2016-02-09 02:44:54

标签: constraints uiviewanimation ios-autolayout

目标:能够为容器视图的框架设置动画,同时它的子视图保持其原始布局&将按比例缩放到其容器视图。

方案:

  1. 通过约束/自动布局定位的元素;在绿色容器内。
  2. 根据动画调整Green containerView的物理坐标(帧/边界)。
  3. 会员'压缩&拥抱属性设置为优先级。
  4. 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
                })
            }
        }
    }
    

    这是原始布局:

    enter image description here

    我希望成员元素按比例缩放,其容器视图如下:

    enter image description here

    但是成员元素(一个标签' Hello World!')没有相应调整,因为他们的绿色容器视图动画到左上角的一个正方形:

    enter image description here

    我如何保留UIView的会员'按照比例布局流行的盛行集装箱视图框架?

    注意:这适用于任何类型的成员(UIView,UITextView,...等);简单的位置/布局&转换(枢轴)动画。

1 个答案:

答案 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的框架 这是一个例子:
enter image description here