我有 2 个视图。一个 MapKitView 和一个 UILabel。自动布局已打开。
我希望 MKView 占据整个屏幕(这似乎工作正常)并且 UILabel 保持与屏幕底部的自动距离但水平居中。UILabel 内容以编程方式更改,之后我调用sizeToFit
.
在调用sizeToFit
UILabel 之后,它不再居中 - 宽度似乎仅从右侧(后缘)调整,使左侧保持恒定位置。
我的理解是,我应该能够通过在 IB 中设置正确的约束来实现我想要的吗?
我对标签应用的约束是:
Height Equals: 32
Width Equals: 166
Bottom Space to: Superview Equals: Default
Align Center X to: Map View
只有最后一个,“Align Center X”是一个用户约束——其余的由 IB 提供。
我已经尝试了很多事情,但没有一个有太多的理解(大概是我的问题!)。
我已经打电话setTranslatesAutoresizingMaskIntoConstraints: NO
给标签了。我已经设置了标签的autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin
. 我尝试设置preferredMaxLayoutWidth
为随机值。needsUpdateConstraints
在标签上调用。我试着把电话sizeToFit
放在viewDidLayoutSubviews
.
我得出的结论是,我需要更多地了解我应该如何处理这个问题。sizeToFit
启用自动布局时不是要调用的东西吗?调用后我是否需要以某种方式刺激自动布局sizeToFit
?我注意到旋转模拟器似乎使标签居中,所以听起来有可能吗?
我已经重新阅读了Apple Auto Layout 指南,但恐怕我仍然不确定我做错了什么,并且建议的调试技巧(visualizeConstraints 等)似乎在 iOS 上不起作用。
感谢您提供任何线索。