2013-01-04 122 views
2

我遵循Apple的指導原則,在下面的鏈接中使用UIScrollView實現自動佈局。 http://developer.apple.com/library/ios/#releasenotes/General/RN-iOSSDK-6_0/index.htmliOS UIScrollview自動佈局 - UILayoutFittingCompressedSize

它說,「或者,你可以創建一個視圖子樹在滾動視圖中去,建立你的約束,並調用systemLayoutSizeFittingSize:方法(與UILayoutFittingCompressedSize選項),以找到您要使用的大小爲您的內容視圖和滾動視圖的contentSize屬性。「

我的問題是,當我叫

CGSize newSize = [self.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; 

新尺寸有大於320 我怎麼能限制它,這樣的新尺寸爲320寬的寬度,所以功能systemLayoutSizeFittingSize返回大高度適合所有的意見?我可以使用不同的參數來代替UILayoutFittingCompressedSize嗎?

謝謝!編輯:我有一個UILabel subview的contentView,它的numberOfLines被設置爲0.但是,我看到,當我在這個UILabel上調用sizeThatFits時,它返回的寬度大於320.因此,self.contentView方法調用返回一個足夠大以支持UILabel的newSize。

因此,我認爲問題源於我的UILabel。我如何確保在調用sizeToFit時UILabel返回的寬度小於320,因此只有高度被縮放以適合文本正文?

回答

1

找到了解決方案。

爲UILabel調用的屬性preferredMaxLayoutWidth適用於我。我將它應用到UILabel,其值爲320,現在self.contentView方法不會返回大於320的寬度。

有趣的是,UILabel sizeThatFits方法不考慮preferredMaxLayoutWidth,因爲它返回的CGSize仍然具有大於prefferedMaxLayoutWidth的寬度。