XCode 6.3 Hinzufügen von Rändern zu Tableviewcell

8

Hat XCode 6.3 / Swift 1.2 dem ContentView einer UITableViewCell zusätzliche Ränder hinzugefügt? Vor der Aktualisierung hatte ich eine benutzerdefinierte UIView, die sich in meinen Zellen über den ganzen Bildschirm erstreckte. Beispiel:

Nun scheint alles in der Zelle zusätzliche Ränder zu haben, von denen ich keine Ahnung habe, woher sie kommen.

Beachten Sie, dass die Breite dieser Ansicht in keiner Weise im Code geändert wird und die Rechte und Links wie folgt eingeschränkt sind:

Beachte auch, dass ich tableView.separatorStyle = .None verwende. Ich füge diese Tatsache hinzu, weil aus irgendeinem Grund in einem meiner tableView s, das das Standardtrennzeichen hat, diese zusätzlichen Ränder anscheinend nicht hinzugefügt werden.

Weiß jemand, ob sie irgendeine merkwürdige Änderung in XCode 6.3 gemacht haben? Dieses Verhalten trat direkt nach dem Aktualisieren auf.

Bearbeiten:

    
ad121 18.04.2015, 02:19
quelle

1 Antwort

19

Sehen Sie sich diesen Screenshot des Größeninspektors für eine führende Einschränkung an:

Sehen Sie, wie "Relativ zum Rand" ausgewählt ist? Das ist dein Problem. Wenn sich der Rand ändert, ändert sich die linke Kante. Deaktivieren Sie den Menüeintrag und ändern Sie dann die Konstante auf Null. Tun Sie das auch für die nachfolgende Einschränkung, und Ihre Probleme werden vorbei sein.

Lassen Sie uns jetzt das tiefere Problem ansprechen: Was hat sich geändert? Du hast absolut recht, etwas hat getan. Ich glaube, sie haben einen Fehler behoben, und Sie haben sich in der Reparatur verfangen. Die Protokollierung zeigt mir, dass die preservesSuperviewLayoutMargins der Zelle true ist und dass die Ränder der Tabelle 0,16,0,16 sind. Dies gilt sogar für iOS 8.2, so dass die effektiven Margen auf iOS 8.2 sollten 16 waren. Aber sie waren 8, als wären preservesSuperviewLayoutMargins false . Aber in iOS 8.3 wird diese Einstellung richtig befolgt - mit dem Ergebnis, dass Sie beobachtet haben.

Somit wäre eine andere Möglichkeit, das Problem zu lösen, die Constraints so zu belassen, wie sie sind, aber das preservesSuperviewLayoutMargins der einzelnen Zellen auf false in cellForRowAtIndexPath: zu setzen. Dies funktioniert genauso gut, um das Ergebnis in beiden Systemen identisch zu machen.

BEARBEITEN Gute Neuigkeiten: Es sieht so aus, als ob diese Änderung in iOS 9 rückgängig gemacht wird. Somit würden Ihre Zellen ohne Änderung in iOS 9 genauso aussehen wie in iOS 8.2 und früher. p>     

matt 18.04.2015, 03:05
quelle