habe ich eine UICollectionView im Interface Builder. Ich referenzierte es mitWie kann ich programmgesteuert die Größe eines UICollectionView ändern?
@property (strong, nonatomic) IBOutlet UICollectionView *contactList;
in meiner .h-Datei und @synthesize contactList; in meiner .m-Datei.
Ich habe versucht, ein etwas anderes Layout in Hoch- und Querformat mit dem folgenden Code zu implementieren:
- (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;
}
}
Das funktioniert prefectly, aber ich mag auch die Größe ändern (in der Landschaft habe ich ein 2 * 3 Gitter pro Seite und im Hochformat ist es ein 3 * 2 Raster). Ich habe versucht, die Größe wie folgt einzustellen:
CGRect frame = [contactList frame];
frame.size.width = 960;
[contactList setFrame:frame];
Aber es wird nicht aktualisiert. Es gibt keinen Fehler, aber die Ansicht wird nicht aktualisiert. Es bleibt nur in der gleichen Größe wie zuvor. Was muss ich tun, um die Ansicht zu aktualisieren?
Können Sie versuchen, 'self.contactList' zu verwenden? – Amar
@amar Es wird immer noch nicht aktualisiert. – Kevin
Haben Sie versucht, die Größe automatisch mit Federstreben/Autolayout einzustellen? –