不再为iOS 16中的uicollectionViewCell/uitableViewCell调用Intinsiccontentsize()吗?
我已经在uicollectionViewCell中使用了InvaLationIntrinsicContentsize()
来计算自定义UI。但是它并未在iOS Beta 16设备上调用intrinsiccontentsize
。
class DynamicCell: UICollectionViewCell {
func invokeResize() {
cell.subviews.forEach { $0.resize() }
// it doesn't invoke intrinsicContentSize from iOS 16 beta ??
invalidateIntrinsicContentSize()
}
override func intrinsicContentSize: CGSize {
return calculateDynamicCellSize()
}
}
我不知道它是实现uicollectionView.selffsizingInvalidation
属性的错误还是指
规可以使用父级(uicollectionReusableView
| uiview
)方法为iOS beta 16修改此代码。
class RevisedDynamicCell: UICollectionViewCell {
func invokeResize() {
cell.subviews.forEach { $0.resize() }
if #available(iOS 16.0, *) {
// It works because it called UIView.invalidateIntrinsicContentSize
invalidateUIViewIntrinsicContentSize()
} else {
invalidateIntrinsicContentSize()
}
}
override func intrinsicContentSize: CGSize {
return calculateDynamicCellSize()
}
}
extension UICollectionReusableView {
func invalidateUIViewIntrinsicContentSize() {
super.invalidateIntrinsicContentSize()
}
}
I've used invalidateIntrinsicContentSize()
in UICollectionViewCell to calculate custom UI. But it doesn't invoke intrinsicContentSize
on iOS beta 16 devices..
class DynamicCell: UICollectionViewCell {
func invokeResize() {
cell.subviews.forEach { $0.resize() }
// it doesn't invoke intrinsicContentSize from iOS 16 beta ??
invalidateIntrinsicContentSize()
}
override func intrinsicContentSize: CGSize {
return calculateDynamicCellSize()
}
}
I don't know if it is a bug or a specification that occurred while implementing UICollectionView.selfSizingInvalidation
property
I could revise this code for iOS beta 16 using parent's( UICollectionReusableView
| UIView
) methods like below.
class RevisedDynamicCell: UICollectionViewCell {
func invokeResize() {
cell.subviews.forEach { $0.resize() }
if #available(iOS 16.0, *) {
// It works because it called UIView.invalidateIntrinsicContentSize
invalidateUIViewIntrinsicContentSize()
} else {
invalidateIntrinsicContentSize()
}
}
override func intrinsicContentSize: CGSize {
return calculateDynamicCellSize()
}
}
extension UICollectionReusableView {
func invalidateUIViewIntrinsicContentSize() {
super.invalidateIntrinsicContentSize()
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论