2014-01-07 22 views
0

我使用XCode 5的iOS 7自動佈局。我已經設置了一個UILabel約束爲領先的空間到超級視圖(這是一個UIScrollView),頂部空間一個imageview和底部空間到超級視圖,這會導致標籤根據內容調整大小並決定scrollview的內容大小 - 這是完美的。然而,無論何時將設備旋轉到縱向位置,UILabel都會在寬度上擴展(我想要),但不再需要儘可能多的垂直空間...... Superview的底部空間(eq:81點)創建的UILabel太高因爲它的內容並沒有頂部垂直對齊垂直居中。有沒有辦法自動處理這個問題,還是我需要手動將底部空間擴展到設備旋轉時的超級視圖?界面生成器iOS 7 Autolayout創建標籤太高

接口生成器:http://cl.ly/image/2r1a3H1U2r0R; http://cl.ly/image/2o2A3I44353a

肖像:http://cl.ly/image/060p2Z0L3S0D

景觀:http://cl.ly/image/360E1u1s0R1H

+0

注:我也嘗試設置底部空間,以上海華> = 81無濟於事 –

回答

2

而不是設置標籤的高度(通過設置它的頂部和底部)的,先不談其高度。標籤的高度會隨着其寬度的變化而自動增加或減少,以便完美地適應其內容。

編輯: Ooops,沒有仔細閱讀這個問題;我們不能刪除底部約束,因爲它需要幫助設置超級視圖的大小(滾動視圖的內容視圖)。在這種情況下,解決方案是通過設置其self.preferredMaxLayoutWidth與其寬度匹配來提示標籤爲其內容假設正確的高度。下面是展示一個UILabel子類,自動調整自身以這種方式我的書代碼:

-(void)layoutSubviews { 
    [super layoutSubviews]; 
    self.preferredMaxLayoutWidth = self.bounds.size.width; 
} 
+0

如果我刪除底部空間superview,它不再強制scrollview的contentview展開並基本上被剪裁 –

+1

在佈局過程中,將標籤的preferredMaxLayoutWidth設置爲匹配其寬度。這將迫使標籤承擔正確的高度。 – matt

+0

閱讀此答案後,我來到了該解決方案:http://stackoverflow.com/a/19194592/535632 –