我有一个可以在宽度上动态增长的UIView。该视图还有位于其边界内的子视图。
默认行为似乎是当视图的框架沿x轴增长时,增加frame.size.width
,它总是在右边缘增长,保持子视图固定,好像有一个固定左边距。但是,当我想在左边缘展开视图时,由于此行为,这不起作用。在这种情况下,我希望它以镜像方式运行,就好像有一个固定右边距。我当然可以“手动”移动所有子视图,所以看起来就是这种情况,但这似乎很尴尬,因为可能有很多。
所以我想问题的确是,是否有办法转移相对于其子视图的视图边界?可能是autoresizingMask的方法吗?
感谢。
答案 0 :(得分:1)
也许你应该看一下UIView子类的AutoresizingMask属性: - )
例如,如果您有一个名为labelVideoTitle的UILabel,您可以像这样设置一个掩码:
[ labelVideoTitle setAutoresizingMask:UIViewAutoresizingFlexibleWidth ];
顺便说一句,您可以添加2个面具,如:
[ labelVideoTitle setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ];
祝你好运!
编辑:要增加左边缘的父视图框架大小,您可以将其X位置更改为左侧以给出所需的印象^^例如,如果您向宽度添加10磅,请尝试修改X原点-10点: - )
答案 1 :(得分:1)
在界面构建器中,您可以在CMD-3(小标尺图标)尺寸检查器中以图形方式指示视图中每个元素在调整父视图大小时应该执行的操作:您可以指示哪些边框(顶部,左侧,右侧, ()),在调整父视图大小时,给定元素应“坚持”。您还可以指示给定元素是否应自行调整大小(宽度或高度)或保持相同的大小。在引擎盖下,这为您正在编辑的UIView元素设置了自动调整大小,但是特别是为了使元素坚持特定边框,Interface Builder是可行的方法。
IB尺寸检查器还有一个简洁的小动画,可以在调整大小时向您显示假设元素(小红色方块)的效果,给定左侧的设置。