lundi 9 mars 2015

self-sizing uitableviewcell not recalculate content size when subview instrinsic content size has changed


Vote count:

0




everyone, i have issue about uitableviewcell


custom uitableview cell which has subviews, one of which is custom image view named CustomIntrinsicImageView, and code as below:



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)
}
}


the subviews have layout constraints to cell, and the image view update preferredMaxLayoutWidth in cell's layoutSubview body, code like this



override func layoutSubviews() {
super.layoutSubviews()

image🐶.preferredMaxLayoutWidth = CGRectGetWidth(contentView.bounds) - CGFloat(leftMarginImage + rightMarginImage)

}


the result of custom image view is perfect, but cell not recalculate height.


some of system UI like as UILable, UITextView has own instrinsicContentSize implement,which cooperate well with cell


so, the question is how to send information to cell, and let it know subview content size has change and recalculate height


thanks



asked 47 secs ago







self-sizing uitableviewcell not recalculate content size when subview instrinsic content size has changed

Aucun commentaire:

Enregistrer un commentaire