2013-03-15 70 views
2

我有2个视图。一个MapKitView和一个UILabel。自动布局已打开。保持一个UILabel以改变内容和AutoLayout为中心

我想要MKView占用整个屏幕(这似乎工作正常)和UILabel保持从屏幕底部的自动距离,但水平居中。 UILabel内容以编程方式更改,之后我致电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 | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin。我曾尝试将preferredMaxLayoutWidth设置为随机值。在标签上拨打needsUpdateConstraints。我尝试将sizeToFit拨打电话viewDidLayoutSubviews

我得出结论我需要多一点理解我应该如何接近这一点。当自动布局打开时,是不是要调用的东西是sizeToFit?在拨打sizeToFit之后,我需要以某种方式制作自动布局吗?我注意到,旋转模拟器似乎集中在标签上,所以刺激听起来有可能吗?

我重新阅读了Apple Auto Layout guide,但恐怕我仍然不确定自己做错了什么,并且提示的调试技巧(visualizeConstraints等)在iOS上似乎不起作用。

感谢您的任何线索,你可以备用。

回答

2

我的推销理念似乎是正确的。在致电sizeToFit后,我需要拨打[label.superview setNeedsLayout]。虽然这工作,但我不确定为什么我需要手动执行此操作,而不是标签布局在大小更改时变脏。

相关问题