gpt4 book ai didi

ios - 如何计算从具有自动布局纵横比约束的 xib 加载的 UICollectionViewCell 的大小?

转载 作者:行者123 更新时间:2023-12-01 16:33:47 26 4
gpt4 key购买 nike

我有一个 UICollectionViewCell,它从 xib 加载并存储在一个属性中,以帮助计算我的 Collection View 的单元格大小。 Collection View 始终只有一列,因此单元格的宽度会根据用户拥有的手机(iphone 5/6/6+)而有所不同。 xib 有一个 ImageView ,其纵横比对于所有手机尺寸都必须保持不变。

我遇到的问题源于此配置。我似乎无法根据固定宽度按照我想要的方式制作单元格大小。我的 sizeForItemAtIndexPath:方法如下所示:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
self.sizingCell.frame.size.width = self.flowLayout.fullViewSectionSize.width;
[self configureCell:self.sizingCell atIndexPath:indexPath];
[self.sizingCell setNeedsLayout];
[self.sizingCell layoutIfNeeded];
CGSize size = [self.sizingCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
return size;
}

我正在做我读过的我应该使用屏幕外单元格进行动态大小计算的内容,但问题是当 layoutIfNeeded被调用时,我的约束和一个额外的约束将单元格的高度设置为 xib 中定义的高度,我得到了一个不可满足的约束异常。系统永远不会破坏我没有添加的这个额外的高度约束,因此单元格的高度始终是 xib 中设计时 View 的不正确高度。

我可以以某种方式删除导致它不起作用的无关约束吗?是否有其他设置可以在这里设置来满足我的需要?我试过关闭 translatesAutoResizingMaskIntoConstraints也无济于事。如何使加载 xib 的单元格根据涉及纵横比的约束确定其大小?

编辑:

如果你想看看我在说什么,我在这里的 github repo 中整理了一个 swift 版本: https://github.com/klundberg/Autolayout-CollectionViewExample

最佳答案

我通过一些解决方法解决了这个问题。

最初,我的 xib 是一个 Collection View 单元格,其 subview 是其中具有纵横比约束的图像。这与 iOS 添加到这些单元格的默认约束(名为“UIView-Encapsulated-Layout-Height/Width”)相冲突。我的解决方案是在单元格和我关心布局的 View 之间引入一层 View ,所以现在这是一个包含容器 View 的单元格,其中包含我的 ImageView 。容器 View 没有得到应用到它的封装布局约束,所以如果我创建一个 IBOutlet为它调用systemLayoutSizeFittingSize:在该 View 上(而不是 contentView 设置其宽度后,它将正确计算高度而没有约束冲突。

关于ios - 如何计算从具有自动布局纵横比约束的 xib 加载的 UICollectionViewCell 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30113202/

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