Utworzyłem UICollectionView w konstruktorze interfejsów. Odwołułem się do niego zJak mogę programowo zmienić rozmiar UICollectionView?
@property (strong, nonatomic) IBOutlet UICollectionView *contactList;
w moim pliku .h i @synthesize contactList; w moim pliku .m.
starałem się wdrożyć nieco inny układ w pionowym i poziomym za pomocą następującego kodu:
- (void) adjustViewsForOrientation:(UIInterfaceOrientation) orientation {
if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) {
UICollectionViewFlowLayout *flow = (UICollectionViewFlowLayout*)contactList.collectionViewLayout;
flow.sectionInset = UIEdgeInsetsMake(48, 80, 48, 0);
flow.minimumLineSpacing = 80;
} else if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) {
UICollectionViewFlowLayout *flow = (UICollectionViewFlowLayout*)contactList.collectionViewLayout;
flow.sectionInset = UIEdgeInsetsMake(48, 64, 48, 0);
flow.minimumLineSpacing = 64;
}
}
to działa perfekcyjnie, ale też chcą zmienić rozmiar (w krajobrazie Mam 2 * 3 siatkę za stronę a w portretie to siatka 3 * 2). Próbowałem ustawić rozmiar w następujący sposób:
CGRect frame = [contactList frame];
frame.size.width = 960;
[contactList setFrame:frame];
Ale to się nie zaktualizuje. Nie ma błędu, ale widok nie jest aktualizowany. Po prostu pozostaje w tym samym rozmiarze co poprzednio. Co muszę zrobić, aby zaktualizować widok?
Czy możesz spróbować użyć 'self.contactList'? – Amar
@amar To wciąż nie aktualizuje. – Kevin
Czy próbowałeś automatycznie ustawiać rozmiar za pomocą sprężyn-rozpórek/autolayout? –