Ich versuche, die Breite eines UIView
in einem benutzerdefinierten UITableViewCell
zu erhalten, um einige Änderungen an seinem Aussehen vorzunehmen. Ich verwende Auto-Layout, aber die Breite der zurückgegebenen Ansicht ist die, die in der XIB-Datei definiert ist. Dies ist unterschiedlich zu seiner tatsächlichen Breite, sobald das Autolayout die Zelle ausgelegt hat.Korrekte automatische Layoutbreite wird nicht auf iOS 8 zurückgegeben
Mein Code ist in layoutSubviews()
:
override func layoutSubviews() {
super.layoutSubviews()
print(backgroundView.frame.width)
}
Dies funktioniert in iOS 9, aber nicht in iOS 8. self.setNeedsLayout()
und self.layoutIfNeeded()
Aufruf hat keine Wirkung. Wo kann ich den Code so verschieben, dass er die richtige Breite anzeigt?
Danke.
Eine schnelle Lösung könnte sein, wenn die Zellenbreite die volle Breite abdeckt, um 'UIScreen.mainScreen(). Bounds.width' zu verwenden, oder ein wenig Berechnung, die das Padding berücksichtigt. – iphonic
@iphonic Es hat einige Polsterung, aber ja das könnte eine Option sein .. Nur wundern, wenn es einen besseren Weg gibt – Tometoyou
Kann sein [dies] (http://stackoverflow.com/questions/26629240/ios-autolayout-frame-size -nicht-set-in-viewdidlayoutsubviews) kann Ihnen helfen. – iphonic