我目前在xcode中測試一個UICollectionView只有一個水平行像一個封面流。基本上我有我自己的自定義單元格類和單元格的xib文件,然後在每個單元格上添加另一個具有xib的UIView。如果你想知道爲什麼,這是我可以添加不同的UIViews到單元格。現在我只添加一個。UICollectionViewCells與UICollectionViewFlowLayout - 奇怪的佈局發生
編輯我跟隨了WWDC 2012視頻創建UICollectionViewCell的一個linelayout,但有一處不同。而不是在中間的細胞變得越來越大,所有其他細胞變得更小。
以下全部內容對我的問題而言是新的。
-(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *array = [super layoutAttributesForElementsInRect:rect];
CGRect visibleRect;
visibleRect.origin = self.collectionView.contentOffset;
visibleRect.size = self.collectionView.bounds.size;
for (UICollectionViewLayoutAttributes *attributes in array){
if (CGRectIntersectsRect(attributes.frame, rect)) {
CGFloat distance = CGRectGetMidX(visibleRect) - attributes.center.x;
CGFloat normalizedDistance = distance/ACTIVE_DISTANCE;
if (ABS(distance) < ACTIVE_DISTANCE) {
//THIS WOULD MAKE THE MIDDLE BIGGER
//CGFloat zoom = 1 + ZOOM_FACTOR *(1- ABS(normalizedDistance));
//attributes.transform3D = CATransform3DMakeScale(zoom, zoom, 1.0);
//attributes.zIndex = round(zoom);
} else {
//THIS MAKES ALL THE OTHERS NOT IN THE RECT SMALLER
CGFloat zoom = 1 + ZOOM_FACTOR *(1- ABS(normalizedDistance));
attributes.transform3D = CATransform3DMakeScale(zoom, zoom, 1.0);
attributes.zIndex = round(zoom);
}
}
}
return array;
}
該問題可以附加圖像中可以看出。
粉紅=集合視圖尺寸
布朗=細胞大小
綠色=細胞內容大小和一個附加的XIB到內容的尺寸。
我想我的問題是佈局。當出售出售時,通過上面的代碼使其變小。然後,當它被重用時,CELL會再次變大,但內容視圖不會。
我已經厭倦了手動設置內容視圖的框架,但是什麼都不做。
更新1:這也只發生在我添加一個xib到單元格內容視圖。如果沒有子視圖的內容視圖,那麼沒有問題
UPDATE 2:它似乎是細胞的子視圖,我的xib沒有調整大小。我試圖手動改變其框架大小,但唯一有用的地方在於單元格拉伸方法,這對我來說就像是一種黑客攻擊。
謝謝苛刻。雖然我認爲你的答案很好,並且在這種情況下可能會有所幫助,並且我沒有理由解決我的自動佈局約束,但實際上修復了它。 – darbid
其實苛刻既不你的解決方案也不幫我。我希望正確的做法是使用這個線程來找到一個解決方案,而不是打開一個新的問題。我會在上面編輯。 – darbid