在缩放的UIView中自动排列子视图

时间:2014-03-17 15:20:15

标签: ios objective-c

我正在尝试放大和缩小UIView,并重新排列内容以使两种状态看起来相似:缩放和正常。 此图显示默认状态(我要缩放的视图为橙色并具有5个UIImageViews):

enter image description here

当我按下“放大”按钮时,我改变橙色视图框:

_page.frame = self.view.bounds;

我得到以下结果:

enter image description here

但是我想要实现的目标与此类似(如果我缩放视图,结果相同):

enter image description here

这意味着我必须为每个子视图更改帧,但是当视图上有许多对象时,它可能会很复杂。 我要求的是一些提示或方法,如何在不访问子视图的情况下获得所需的结果。

2 个答案:

答案 0 :(得分:2)

有一些黑客可以做到这一点,但正确的方法是使用自动布局。您不必访问任何子视图,并且可以在故事板/ IB中执行此操作。 如果使用自动布局,则实际上可以创建约束,这些约束将固定子视图的以下属性:

  • 将顶部子视图的顶部空间和前导空间固定到容器
  • 将除最后一个子视图之外的所有子视图的垂直距离固定到最近的邻居并将前导空间固定到容器
  • 将最后一个子视图的顶部垂直空间固定到最近的邻居和底部空间到容器,将前导空间固定到容器
  • 设置高度和宽度的约束,但将优先级设置为低

答案 1 :(得分:1)

除了设置框架(只是改变视图的大小)之外,你想要改变转换(缩放视图)尝试类似:

_page.transform = CGAffineTransformMakeScale(2.0, 2.0)

您可能希望根据旧视图大小和新大小计算比例因子。