Xcode 8 - Einige Schaltflächen wurden entfernt

8

Ich habe gerade meinen Xcode von 7.3 auf 8.0 aktualisiert und einige Tastenränder sind verschwunden.

Der Code sieht gut aus, also weiß ich wirklich nicht, was mit den Layern passiert ist. Übrigens - in einigen anderen Controllern kann ich die Ebenengrenzen sehen.

%Vor%

vorher: (Das Bild ist nur zum Beispiel - die Ränder sehen in Echtzeit anders aus)

jetzt:

    
Asi Givati 14.09.2016, 09:25
quelle

6 Antworten

16

Der Grund ist, dass XCode 8 eine neue Art zum Zoomen in Storyboards einführt.

Vor XCode 8 war im View Controller-Lebenszyklus frames in viewDidLoad (oder in den Eigenschaften didSet ) nicht bekannt. Sie mussten warten, bis viewDidLayoutSubviews (in diesem Fall hat Autolayout die Einschränkungen angewendet, um die Frames jeder Unteransicht in der Hauptansicht zu bestimmen). Vorher war bounds jedoch zugänglich: Sie wurden nur auf die Größe des IBOutlet im Storyboard gesetzt.

In XCode 8 sind die Dinge anders: aufgrund ihres neuen Zoomsystems sind selbst die bounds vor ViewDidLayoutSubviews nicht korrekt (sie können existieren, aber mit Dummy-Werten wie 1000 x 1000).

Fazit:

  • Sie können solche Dinge wie cornerRadius in viewDidLoad oder im IBOutlet verwenden didset, solange Sie einen festen Wert verwenden
  • Wenn Sie Ihren cornerRadius auf Basis von bounds definieren müssen, dann tun Sie dies in viewDidLayoutSubviews oder verwenden Sie NSLayoutConstraints (ihr Wert ist fest und aus Autolayout bekannt)
  • Wenn Sie cornerRadius in Ansichten verwenden müssen (wie UITableViewCell- oder UICollectionViewCell-Unterklassen), können Sie dies entweder in layoutSubviews tun (aber dann müssen Sie entweder einen festen Wert oder eine NSLayoutConstraint angeben) constant to cornerRadius) oder in awakeFromNib (fügen Sie in diesem Fall self.layoutIfNeeded hinzu, bevor Sie Frame- oder Bounding-bezogene Aktionen ausführen, um die Zelle zu zwingen, den Frame ihrer Subviews neu zu berechnen).
Frédéric Adda 14.09.2016, 16:16
quelle
4

Ich denke, Problem darin:

%Vor%

Wenn Sie eine Ecke setzen, denke ich, dass die Schaltfläche "height" keinen Wert hat oder dass der Wert für einen größeren Rahmen nicht angezeigt wird. Sie können versuchen, es in

zu ändern %Vor%

Wenn ich arbeite, denke ich, dass du deine Logik überprüfen und einstellen kannst, wenn die Höhe-Schaltfläche den richtigen Wert erreicht.

    
vien vu 14.09.2016 09:40
quelle
2

Versuchen Sie es und überprüfen Sie:

%Vor%     
KSR 14.09.2016 09:43
quelle
0

Um zu erzwingen, dass der Ansichtsrahmen berechnet wird, können Sie mit layoutIfNeeded versuchen. Zum Beispiel für ein Label in einer UITableViewCell:

%Vor%     
CedricSoubrie 10.10.2016 14:00
quelle
0

verwenden Sie dispatch_after

%Vor%     
Gurjinder Singh Khalsa 11.11.2016 15:54
quelle
-1

das RoundedRect ist veraltet, verwenden Sie stattdessen UIButtonTypeSystem. Weitere Informationen finden Sie unter Ссылка .

    
Tony 19.11.2016 18:12
quelle

Tags und Links