2017-12-25 6 views
0

Ich habe eine Sammlung Ansicht Umbruch von UIView, die Sammlung Ansicht hat die gleichen Grenzen mit Wrapper-Ansicht. Die Datenquelle für die Sammlungsansicht wird geändert, sodass die Grenzen für die Wrapperansicht ebenfalls geändert werden. Ich habe die Wrapper-Sicht intrinsicContentSize Methode mit collectionView.collectionViewLayout.collectionViewContentSize implementiert, und die Sammlung Ansicht Layout ist Unterklasse von UICollectionViewFlowLayout, die Zelle der UICollectionView hat auch Methode intrinsicContentSize implementieren, aber die Wrapper-Ansicht Frame mit Sammlung Ansicht Inhalt Größe nicht aktualisiert. collectionViewContentSize ist immer CGRectZero. Ich habeUICollectionView wrapper view Rahmenupdate

versucht
[self.layout invalidateLayout]; 
    [self.collectionView reloadData]; 
    [self.collectionView layoutIfNeeded]; 

aber hat nicht funktioniert, Was soll ich den Wrapper Ansicht Rahmen mit collectionView.collectionViewLayout.collectionViewContentSize aktualisieren tun.

einig Codes Es ist unten:

ZXCollectionViewWrapperView *wrapperView = [[ZXCollectionViewWrapperView alloc] init]; 
    [self.view addSubview:wrapperView]; 
    [wrapperView mas_makeConstraints:^(MASConstraintMaker *make) { 
    make.center.equalTo(self.view); 
    }]; 
    self.wrapperView = wrapperView; 

    /// wrapper view size 
- (CGSize)intrinsicContentSize { 
    return self.collectionView.collectionViewLayout.collectionViewContentSize; 
} 


    ZXCollectionViewAlignedLayout *layout = [[ZXCollectionViewAlignedLayout alloc] init]; 
    self.layout = layout; 
    ZXCollectionView *collectionView = [[ZXCollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; 
    collectionView.dataSource = self; 
    collectionView.delegate = self; 
    collectionView.backgroundColor = [UIColor lightGrayColor]; 
    [self addSubview:collectionView]; 
    [collectionView mas_makeConstraints:^(MASConstraintMaker *make) { 
    make.edges.equalTo(self); 
    }]; 
    self.collectionView = collectionView; 

    [self.collectionView zx_registerCellClass:[ZXCommendCell class]]; 

    self.dataSource = dataSource; 
    [self.collectionView reloadData]; 
    [self.collectionView layoutIfNeeded]; 

Antwort

0

Wie Sie automatisches Layout verwenden, sollten Sie eine Höhe Einschränkung für Wrapper-Ansicht erstellen. Dann können Sie die Konstante zum Inhalt gleich Sammlung Ansicht Größe dieser Einschränkung ändern, wie folgt aus:

heightConstraint = make.height.equalTo(200) // initial height 

dann können Sie KVO verwenden, um Sammlung Ansicht Inhalt Größe zu ändern zu beobachten und setzen

heightConstraint.constant = collectionView.contentSize.height 

können Sie Beachten Sie dies für die Beobachtung contentSize: observing contentSize (CGSize) with KVO in swift

+0

Ich möchte die Wrapper-Ansicht Größe von UICollectionView contentSize anpassen, wie UILabel mit Wrapper-Ansicht. (UIlLabel mit Wrapper-Ansicht hat funktioniert, habe ich versucht). – jacinzhang

+0

Sie können dies nicht mit der Sammlungsansicht tun, da es sich um eine Bildlaufansicht handelt – dduyduong