Ios6 通过更改内容和自动布局使UILabel居中
我有两种观点。MapKitView和UILabel。自动布局已打开 我希望MKView占据整个屏幕(这似乎工作正常),UILabel保持与屏幕底部的自动距离,但水平居中。UILabel内容是通过编程更改的,之后我会调用Ios6 通过更改内容和自动布局使UILabel居中,ios6,autolayout,Ios6,Autolayout,我有两种观点。MapKitView和UILabel。自动布局已打开 我希望MKView占据整个屏幕(这似乎工作正常),UILabel保持与屏幕底部的自动距离,但水平居中。UILabel内容是通过编程更改的,之后我会调用sizeToFit 在UILabel上调用sizeToFit后,它不再居中-宽度似乎仅从右侧(后缘)调整,保持左侧处于恒定位置 我的理解是,只有在IB中设置正确的约束条件,我才能实现我想要的 我应用于标签的约束有: Height Equals: 32 Width Equals: 1
sizeToFit
在UILabel上调用sizeToFit
后,它不再居中-宽度似乎仅从右侧(后缘)调整,保持左侧处于恒定位置
我的理解是,只有在IB中设置正确的约束条件,我才能实现我想要的
我应用于标签的约束有:
Height Equals: 32
Width Equals: 166
Bottom Space to: Superview Equals: Default
Align Center X to: Map View
只有最后一个“对齐中心X”是用户约束-其余部分由IB提供
我尝试了很多方法,但都不太了解(大概是我的问题!)
我已经在标签上调用了setTranslatesAutoresizingMaskIntoConstraints:NO
。
我已设置标签的autoresizingMask=UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | uiviewautoresizingflexibleleleleftmargin | UIViewAutoresizingFlexibleRightMargin
。我已尝试将preferredMaxLayoutWidth
设置为随机值。在标签上调用needsUpdateConstraints
。我尝试在viewdilayoutsubviews
中调用sizeToFit
我得出的结论是,我需要更多地了解我应该如何处理这个问题。启用自动布局时,sizeToFit
不是要调用的对象吗?调用sizeToFit
后是否需要以某种方式生成自动布局?我注意到,旋转模拟器似乎使标签居中,所以刺激听起来有可能
我已经重新阅读了,但恐怕我仍然不确定我做错了什么,并且建议的调试提示(可视化约束等)似乎在iOS上不起作用
谢谢你能提供的任何线索。我关于必须戳的想法似乎是正确的。调用
sizeToFit
后,我需要调用[label.superview setNeedsLayout]
。虽然这是可行的,但我真的不知道为什么我需要手动执行此操作,而不是在布局大小改变时将其标记为脏的标签