Ich habe eine App, wo manchmal Ansichten in Navigations-Controller sind, manchmal nicht, und manchmal in einer Tab-Leiste und Navigation Controller.Instanziieren des Ansichtsrahmens, damit er mit der Navigationsleiste/Tableiste übereinstimmt?
erstelle ich meine Ansichten programmatisch Code wie folgt aus:
let contact = ContactFormViewController(contactFormView: ContactFormView.init(frame: UIScreen.main.bounds))
aber dies verursacht Frames immer wie der Bildschirm so groß sein, was bedeutet, wenn eine Navigationsleiste oder Tab-Leiste ist der Ansicht gedrückt wird aus dem sichtbaren Bildschirm und passt nicht.
Gibt es eine Methode, um die Ansichtshöhe so anzupassen, dass sie immer auf dem Bildschirm angezeigt wird, unabhängig von übergeordneten Elementen wie der Navigationsleiste oder der Tableiste? oder wäre es ein Fall von immer Erstellen von Ansichten mit manuellen Subtraktionen so sein, die schlecht scheinen, als sie fest codierte Elemente übernehmen muss:
let attendees = AttendeesViewController(attendeesView: AttendeesView.init(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height-55)))
Dank für jede Führung als ein wichtiges Thema in meinem app
Apple vorgeschriebene Art und Weise abzubilden Layout zu tun Auto-Layout genannt wird. Dies ist in Kombination mit Größenklassen, Merkmalssammlungen und dynamischen Schriftgrößen eine Gruppe namens adaptives Layout. Keiner von diesen verwendet Frames - und es funktioniert in allen Größen von iOS-Geräten. – dfd
Ich weiß, wie Auto-Layout funktioniert, aber Sie können das nicht tun, wenn Objekte initiieren ... Sie müssen einen Rahmen für eine manuelle Initialisierung einer Ansicht Controller-Ansicht definieren – jackdm
Verwenden Sie einfach 'CGRect.zero', wenn gezwungen, einen Rahmen zu verwenden. Das ist, was ich tue. (EDIT: Ich habe deine Antwort gesehen. Schön, dass du das gefunden hast!) – dfd