2014-12-30 94 views
6

我試圖設置iOS 8自動調整大小細胞UICollectionViewController
我創建使用故事板基本設計,並設計一個UICollectionViewCell那裏與約束到的邊界標籤細胞。然後,我將該單元格的標籤鏈接到單元的類,以便能夠以編程方式訪問它。
沒有指定estimatedItemSize,一切工作正常(當然除了自動調整大小)。UICollectionView細胞自動尺寸與自動版式的iOS 8

當我指定estimatedItemSize這樣:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UICollectionViewFlowLayout *layout = (UICollectionViewFlowLayout *)self.collectionViewLayout; 
    layout.estimatedItemSize = CGSizeMake(100.0f, 30.0f); 
} 

應用程序崩潰與這些錯誤消息:

the behavior of the UICollectionViewFlowLayout is not defined because: 
the item width must be less than the width of the UICollectionView minus the section insets left and right values. 
Please check the values return by the delegate. 

我想,我是在一個錯誤的地點設置estimatedItemSize,或者,如果我已經有在故事板中設置的指定項目大小,所以它與預計大小存在衝突。

回答

4

回答自己的問題,因爲我發現問題的原因:
要使此功能正常工作,UILabel的寬度必須小於UICollectionView寬度。即使在Storyboard中它看起來沒問題,如果使用AutoLayout,寬度必須受到限制,例如,在我的情況下,我做了一個約束less or equal 320。沒有它,標籤增長到非常大的寬度,但只有1行高度。應用此約束後,換行開始工作,標籤只在高度而不是寬度範圍內增長。

+0

是的它應該工作,但要注意,對於iPhone 6和6+你的標籤不會覆蓋所有的屏幕寬度... – jerrygdm

+0

我已經做了一個插座,並在運行時改變約束的值到手機的屏幕寬度。 –

+0

我有150寬度的單元格,但它不能調整爲iphone 6和6 plus。你可以在這裏找到它http://stackoverflow.com/questions/27981200/how-to-resize-uicollectionviewcell-in-iphone-6-and-6-plus-using-autolayout – Rugmangathan