2013-03-15 29 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]。雖然這工作,但我不確定爲什麼我需要手動執行此操作,而不是標籤佈局在大小更改時變髒。

相關問題