gpt4 book ai didi

ios - 如何获取 iOS 8 中 UICollectionViewCells 的自动布局大小? (systemLayoutSizeFittingSize 在 iOS 8 中返回高度为零的大小)

转载 作者:IT王子 更新时间:2023-10-29 07:56:14 25 4
gpt4 key购买 nike

自 iOS 8 起 [UIColletionViewCell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize] 返回高度为 0 的大小。

代码的作用如下:

为了确定 iOS 7 中 UICollectionView 中单元格的大小,我在使用自动布局的 xib 文件中定义的单元格上使用 systemLayoutSizeFittingSize:。大小取决于 UILabel 的字体大小,它是我的 xib 文件中 UICollectionViewCell 的 subview 。标签的字体设置为 UIFontTextStyleBody。所以基本上单元格的大小取决于 iOS 7 中的字体大小设置。

这是代码本身:

+ (CGSize)cellSize {
UINib *nib = [UINib nibWithNibName:NSStringFromClass([MyCollectionViewCell class]) bundle:nil];

// Assumption: The XIB file only contains a single root UIView.
UIView *rootView = [[nib instantiateWithOwner:nil options:nil] lastObject];

if ([rootView isKindOfClass:[MyCollectionViewCell class]]) {
MyCollectionViewCell *sampleCell = (MyCollectionViewCell*)rootView;
sampleCell.label.text = @"foo"; // sample text without bar

[sampleCell setNeedsLayout];
[sampleCell layoutIfNeeded];

return [sampleCell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
}

return CGSizeZero;

}

它在 iOS 7 中工作得很好,但在 iOS 8 中却不行。不幸的是,我不知道为什么。

如何获取 iOS 8 中 UICollectionViewCells 的自动布局大小?

附注:使用

 return [sampleCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];

代替

 return [sampleCell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];

正如有人可能建议的那样,没有任何区别。

最佳答案

您需要做的是将所有内容包装在容器 View 中,然后调用:

return [sampleCell.containerView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];

您的单元格应如下所示:单元格 -> containerView -> subview

这适用于 ios7 和 ios8。

据说在 ios8 上,您所要做的就是设置 estimateSize & 单元格将自动自动调整大小。显然,这在 Beta 6 中不起作用。

关于ios - 如何获取 iOS 8 中 UICollectionViewCells 的自动布局大小? (systemLayoutSizeFittingSize 在 iOS 8 中返回高度为零的大小),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25265173/

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