我想将子UIView(sub_UIView)定位为父UIView(parent_UIView)的子视图.当parent_UIView调整大小/移动时,sub_UIView将保持parent_UIView的相对位置.例如,sub_UIView位于parent_UIView的右下角.当parent_UIView移动时,sub_UIView将自动停留在parent_UIView的右下角.
我设法通过在parent_UIView的帧移动时更新sub_UIView的框架来手动执行此操作,但是如何在iOS中自动执行此操作?这有什么属性吗?(类似于用于调整子视图大小的autoresizingmask)
谢谢!
更新了旧的回复,仅提到调整蒙版大小
在 iOS 6 中,添加了自动布局,尽管在 Storyboard/xib 中使用 XCode 有点难看。自动布局太大了,无法解释,但其本质是,它是层次结构中视图之间的一组规则。因此,您可以将视图的 x 位置粘贴到父视图的右边框。请参阅自动布局编程指南
看一下尺寸检查器中的选项:
这相当于做
myView.autoresizingMask = UIViewAutoresizingMaskFlexibleTopMargin |
UIViewAutoresizingMaskFlexibleLeftMargin |
UIViewAutoresizingMaskFlexibleWidth |
UIViewAutoresizingMaskFlexibleHeight;
Run Code Online (Sandbox Code Playgroud)
请注意,通过代码执行此操作与通过 IB 执行此操作之间存在差异。边框的 IB 自动调整大小设置就像支柱一样工作,例如,选择正确的边框意味着“我的右边框现在粘在超级视图的右边框上”。
另一方面,代码执行相反的操作,您需要指定哪些边框不被支撑,又名。他们很灵活。高度和宽度正常工作。
如果一切都失败了,不要开始到处手动定位,我一直处于这个位置,它只会导致不可维护的意大利面条代码,其中三个或更多方法会弄乱相同的视图属性。
相反,更喜欢在UIView -layoutSubviews
. 当 a 被触发时,会根据需要调用此方法setNeedsLayout
,例如,当视图的宽度发生变化时,子视图将获取布局子视图事件。还使得实现旋转界面变得更加容易,因为该方法被调用以获取新的宽度,以确定动画的外观。
请记住,布局子视图在执行自动布局/自动调整大小蒙版后才起作用。
归档时间: |
|
查看次数: |
3765 次 |
最近记录: |