- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
(编辑:它似乎从 iOS 9 开始运行良好。我没有进行广泛的测试,但示例有效。这证实了 iOS 中存在的错误8.)
我花了很多时间测试 UICollectionView 的 Flow Layout self 调整大小行为。在经历了很多挫折之后,问题缩小到这样一个事实,即一旦将 estimatedItemSize
设置为非零大小,滚动就不再正常工作。
在我的示例中,它没有显示 40 个项目,而是只显示 32 个。
我已经复制粘贴了下面的代码。我从 Swift 版本开始测试了很多东西。
基本上它无法计算和/或正确更新布局的 collectionViewContentSize()
这是一个完整的演示 http://git.io/AIrHNA
任何人都可以指出我正确的方向吗?
谢谢
@implementation ViewControllerObjcC
static NSString * const reuseIdentifier = @"Cell";
-(UICollectionViewFlowLayout*)flowLayout{
return (UICollectionViewFlowLayout*)self.collectionViewLayout;
}
- (void)viewDidLoad {
[super viewDidLoad];
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
CGSize estimatedSize = CGSizeMake(self.view.frame.size.width, 25.0);
BOOL testEstimatedItemSize = true;
if (testEstimatedItemSize) {
[self flowLayout].estimatedItemSize = estimatedSize;
}else{
[self flowLayout].itemSize = estimatedSize;
}
}
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return 40;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 30)];
[cell.contentView addSubview:label];
label.text = [NSString stringWithFormat:@"%ld",(long)indexPath.row];
label.backgroundColor = [UIColor redColor];
return cell;
}
最佳答案
来自 Apple's Document ,
Specifically, cells that are not onscreen are assumed to be the estimated height.
这是我的猜测。
当估计高度小于实际单元格高度时, Collection View 的内容大小预测小于实际内容大小。
因此它只显示总共 40 个单元格中的 32 个。
在我的项目中,当使用较大的估计尺寸时,所有的 celsl 都会显示。
关于ios - UICollectionViewFlowLayout 的 estimatedItemSize 中断滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27659847/
我正在尝试使用 estimatedItemSize 来动态调整 collectionView 单元格的大小以适应它们的内容塔 我在使用不同的设备尺寸时遇到了一些问题,尤其是宽度没有调整大小,它只是保持
我想在单元格中制作一个带有 estimatedItemSize 和 preferredLayoutAttributesFittingAttributes 的普通 horizontalScrolli
我有一个带有流布局和 estimatedItemSize 的 UICollectionView:flowLayout.estimatedItemSize = CGSize(width: view.fr
(编辑:它似乎从 iOS 9 开始运行良好。我没有进行广泛的测试,但示例有效。这证实了 iOS 中存在的错误8.) 我花了很多时间测试 UICollectionView 的 Flow Layout s
我有一个简单的项目,它的 Storyboard只包含一个 UICollectionViewController,使用适用于 iOS 9.1 的 Xcode 7.1.1 构建 class ViewCon
我有一个 UICollectionViewFlowLayout 和一个 estimatedItemSize 集。 当我运行我的应用程序时,一切正常,但在我的单元测试中,每次我点击 collection
我遇到了 UICollectionViewFlowLayout.estimatedItemSize 的问题。问题是它不适用于 iOS 9 和 10,但适用于 iOS 11。以下是快照: ScreenS
对于我们使用的 UICollectionView 的动态高度单元格, if let layout = self.collectionViewLayout as? UICollectionViewFlo
当使用带有 estimatedItemSize 的自调整单元格时,我无法让我的 UICollection 正确设置 sectionInset.left 边距。 UICollectionview 的单元
我是一名优秀的程序员,十分优秀!