我目前正在 xcode 中测试一个只有一个水平行的 UICollectionView,就像一个封面流。基本上我有自己的自定义单元格类和单元格的 xib 文件,然后在每个单元格上添加另一个带有 xib 的 UIView。如果您想知道为什么,我可以将不同的 UIView 添加到单元格中。现在我只添加一个。
编辑我按照 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 添加到单元格内容视图时才会发生。如果内容视图没有子视图,则没有问题
更新2:似乎单元格的子视图,我的xib没有调整大小。我曾尝试手动更改其帧大小,但唯一有帮助的地方是单元格 drawrect 方法,这对我来说就像是 hack。