Ich möchte ein abgerundetes Bild in einer UITableViewCell anpassen. Ich kann jedoch nicht die richtige Breite meines Bildsets im Storyboard festlegen. Warum?Warum bekomme ich den falschen Wert der Bildbreite in UIImageView
class CustomTableViewCell: UITableViewCell {
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var userImageView: UIImageView!
@IBOutlet weak var captionLabel: UILabel!
@IBOutlet weak var gradientView: UIView!
var photo: Photo! {
didSet {
self.updateUI()
}
}
override func layoutSubviews() {
super.layoutSubviews()
userImageView.layer.cornerRadius = 0.5 * self.userImageView.frame.width
print("\(self.userImageView.frame.width)") // print out 1000.0 !! WHY?
userImageView.layer.cornerRadius = 24 // IT WORKS!
}
private func updateUI() {
self.myImageView.image = UIImage(named: photo.name)
self.userImageView.image = UIImage(named: photo.user)
self.captionLabel.text = photo.caption
print("\(self.userImageView.frame.width)") // print out 1000.0 !! Same here
}
}
Das automatische Layout ' 'Ihrer Tabellenansicht kann den Zellenrahmen beeinflussen.Wenn Sie' Autolayout' verwenden, sollten Sie besser keinen Rahmen verwenden. – Catoshi
Meine Vermutung ist, dass Sie dies zur falschen Zeit tun. Ich weiß, das ist 'layoutSubviews', aber es kann immer noch sein, dass 'userImageView' noch nicht angelegt wurde. 'layoutSubviews' muss den ganzen Weg in der Ansichtshierarchie durchlaufen, bevor dies geschieht. Sie haben nicht erklärt, wo diese 'LayoutSubviews' _is_ ist. Wo ist es? Was ist die Ansichtshierarchie? – matt
Ich habe meine Erklärung mit Code aktualisiert. – WeiJay