gpt4 book ai didi

iphone - UICollectionViewCells 与 UICollectionViewFlowLayout - 发生奇怪的布局

转载 作者:行者123 更新时间:2023-11-29 04:13:35 26 4
gpt4 key购买 nike

我目前正在 xcode 中测试 UICollectionView,只有一个水平行,就像一种封面流。基本上我有自己的自定义单元格类和单元格的 xib 文件,然后在每个单元格上我添加另一个带有 xib 的 UIView。如果您想知道为什么,我可以向单元格添加不同的 UIView。现在我只添加一项。

编辑我已关注 WWDC 2012 视频,了解如何创建 UICollectionViewCell 的线条布局,但有一点不同。所有其他单元格都变小,而不是中间的单元格变大。

下面的所有内容对于我的问题来说都是新的。

-(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;

}

问题可以在附图中看到。

Reused cell not resizing

粉色 = Collection View 大小

棕色 = 单元尺寸

绿色 = 单元格内容大小以及附加到内容大小的 xib。

我认为我遇到的问题是布局。当销售出队时,上面的代码会使其变小。然后,当它被重用时,CELL 会再次变大,但内容 View 不会变大。

我厌倦了手动设置内容 View 的框架,但这没有任何作用。

更新 1:这也仅在我将 xib 添加到单元格内容 View 时发生。如果内容 View 没有 subview 则没有问题

更新 2:看来单元格的 subview ,我的 xib 没有调整大小。我尝试过手动更改其框架大小,但唯一有帮助的地方是单元格的drawrect方法,这对我来说就像是一种黑客攻击。

最佳答案

重用的单元格无法重绘自身,因此请调用

-(void)setFrame:(CGRect)frame {
[super setFrame:frame];
[self setNeedsDisplay]; // force drawRect:
}

来自 UICollectionView 的 cellForItemAtIndexPath。另请查看this link

还有这个question

关于iphone - UICollectionViewCells 与 UICollectionViewFlowLayout - 发生奇怪的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14028117/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com