我目前在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