自调整大小uitableviewcell在子视图内部内容大小更改时不重新计算内容大小

自调整大小uitableviewcell在子视图内部内容大小更改时不重新计算内容大小,uitableview,swift,Uitableview,Swift,各位,我对uitableviewcell有意见 具有子视图的自定义uitableview单元格,其中一个是名为CustomIntrinsicImageView的自定义图像视图,代码如下: class CustomIntrinsicImageView: UIImageView { var _preferredMaxLayoutWidth: CGFloat! var preferredMaxLayoutWidth: CGFloat! { get {

各位,我对uitableviewcell有意见

具有子视图的自定义uitableview单元格,其中一个是名为CustomIntrinsicImageView的自定义图像视图,代码如下:

class CustomIntrinsicImageView: UIImageView {
    var _preferredMaxLayoutWidth: CGFloat!
    var preferredMaxLayoutWidth: CGFloat! {
        get {
             return _preferredMaxLayoutWidth
        }

        set {
             _preferredMaxLayoutWidth = newValue
            invalidateIntrinsicContentSize()
        }
    }
    override func intrinsicContentSize() -> CGSize {
        if let size = image?.size {
            let width: CGFloat
            let height: CGFloat

            if let maxLayoutWidth = preferredMaxLayoutWidth where size.width > maxLayoutWidth {
                width = maxLayoutWidth
                height = maxLayoutWidth * size.height/size.width
           } else {
                width = size.width
                height = size.height
           }

           return CGSizeMake(width, height)
       }

        return CGSizeMake(UIViewNoIntrinsicMetric, UIViewNoIntrinsicMetric)
    }
}
子视图对单元具有布局约束,图像视图在单元的layoutSubview主体中更新preferredMaxLayoutWidth,代码如下

覆盖函数布局子视图(){
super.layoutSubviews()
形象