Also habe ich meine eigene benutzerdefinierte Ansicht mit einem eigenen Initialisierer geschrieben. Wenn meine Hauptansicht geladen wird, wird meine benutzerdefinierte Ansicht jedoch falsch dargestellt. Es dauert Grenzen als 600x600 Rechteck, während der Superview 375x607 ist. Ich habe versucht, Auto-Constraint zu setzen, scheint nicht zu funktionieren. Ich habe versucht, es programmatisch in der Subview-Initialisierung zu tun, aber jedes Mal, wenn ich versuche, seine Bounds-Eigenschaft auf seine Superview-Grenzen zu initialisieren, bekomme ich in Superview keine.
%Vor%Ich habe versucht, alles, was es im Internet gibt, um Subview füllen seine Superview, aber ich denke, dass Subview vor Superview initialisiert wird? Ist das möglich ? Im ViewController muss meine benutzerdefinierte Ansicht als Outlet-Verbindung deklariert sein. Ich bin mir sicher, dass das Problem super einfach sein sollte und ich bin es, der nicht weiß, wie Swift die Ansicht initialisiert.
Irgendwelche Ideen?
Danke.
Erstens ist eine Views-Init-Methode nicht der beste Ort, um ein Layout auszuführen. Die Ansicht kann zu einem späteren Zeitpunkt in der Größe angepasst werden, was normalerweise immer der Fall ist, wenn die Ansicht von einem Xib geladen wird oder Sie sie in einer View Controllers viewDidLoad
-Funktion erstellen.
Davon abgesehen haben Sie mehrere Ansätze:
Dies kann entweder im Interface Builder oder programmgesteuert erfolgen. In Interface Builder verwenden Sie einfach die Option 'Pin' und wählen Sie alle Seiten der Ansicht
Wenn Sie damit fertig sind, sollten Sie Ihre Einschränkungen im Größeninspektor wie folgt sehen:
Alternativ können Sie Ihre Abhängigkeiten immer programmgesteuert in Ihrem Initialisierer hinzufügen:
%Vor%Dazu können Sie entweder Größenänderungsmasken verwenden oder den Rahmen in layoutSubviews steuern. Größenänderungsmasken geben dem System an, wie die Ansicht relativ zur Superansicht skaliert werden sollte:
%Vor%Zuletzt können Sie layoutSubviews überschreiben und von dort gehen:
%Vor%