2014-12-30 10 views
6

Próbuję skonfigurować iOS 8 cells auto zaklejania w UICollectionViewController:
Utworzyłem podstawowy projekt korzystając storyboardy i mające jeden UICollectionViewCell tam z etykietą ograniczone do Granice komórka. Następnie połączyłem etykietę tej komórki z klasą komórki, aby uzyskać do niej dostęp programowy.
Bez podania numeru estimatedItemSize wszystko działa poprawnie (z wyjątkiem automatycznego rozmiaru).UICollectionView Auto komórkowych Rozmiar z autoLayout iOS 8

Kiedy określić estimatedItemSize ten sposób:

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

awarii aplikacji z tych komunikatów o błędach:

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. 

myślę, jestem ustawienie estimatedItemSize w niewłaściwym miejscu, albo, jeśli już mam określony rozmiar elementu ustawiony w scenorysie, więc jest w jakiś sposób sprzeczny z szacunkowym rozmiarem.

Odpowiedz

4

Odpowiadając na własne pytanie, ponieważ odkryłem przyczynę problemu:
Aby funkcja działała, UILabel musi mieć szerokość mniejszą niż szerokość UICollectionView. Nawet jeśli w Storyboard wygląda OK, jeśli używana jest funkcja AutoLayout, szerokość musi być ograniczona, np. w moim przypadku zrobiłem przymus less or equal 320. Bez niego etykieta rośnie do bardzo dużej szerokości, ale tylko do 1 linii wysokości. Po zastosowaniu tego ograniczenia rozpoczęło się zawijanie wierszy, a etykieta wzrosła tylko w stosunku do szerokości.

+0

Tak, to powinno działać, ale zwróć uwagę, że dla iPhone 6 i 6+ Twoja etykieta nie pokryłaby całej szerokości ekranu ... – jerrygdm

+0

Zrobiłem ujście i zmieniłem wartość ograniczenia w czasie wykonywania na szerokość ekranu telefonu. –

+0

Mam komórkę o szerokości 150, ale jej nie zmienia rozmiaru dla iPhone 6 i 6 plus. możesz go znaleźć tutaj http://stackoverflow.com/questions/27981200/how-to-resize-uicollectionviewcell-in-iphone-6-and-6-plus-using-autolayout – Rugmangathan

Powiązane problemy