Da ich zum Erstellen meiner Ansichten keine Storyboards verwende, habe ich mich gefragt, ob es die Option "Sicherheitsbereichshandbücher verwenden" programmgesteuert oder ähnliches gibt.
Ich habe versucht, meine Ansichten zu verankern
view.safeAreaLayoutGuide
Aber sie überlappen immer wieder die Spitzenklasse im iPhone X-Simulator.
ios
swift
iphone-x
safearealayoutguide
Phillip
quelle
quelle
view.safeAreaInsets
? Hast du das versucht?Antworten:
Hier ist ein Beispielcode (siehe: Safe Area Layout Guide ):
Wenn Sie Ihre Einschränkungen im Code erstellen, verwenden Sie die Eigenschaft safeAreaLayoutGuide von UIView, um die relevanten Layoutanker abzurufen. Lassen Sie uns das obige Interface Builder-Beispiel im Code neu erstellen, um zu sehen, wie es aussieht:
Angenommen, wir haben die grüne Ansicht als Eigenschaft in unserem Ansichtscontroller:
Möglicherweise haben wir eine Funktion zum Einrichten der Ansichten und Einschränkungen, die von viewDidLoad aufgerufen werden:
Erstellen Sie die Einschränkungen für führende und nachfolgende Ränder wie immer mit dem layoutMarginsGuide der Stammansicht:
Sofern Sie nicht auf iOS 11 und höher abzielen, müssen Sie jetzt die Einschränkungen der Layout-Anleitung für sichere Bereiche mit #available umschließen und für frühere iOS-Versionen auf die Layout-Anleitungen oben und unten zurückgreifen:
Ergebnis:
Hier ist die offizielle Dokumentation von Apple Developer für das Layout von sicheren Bereichen
Für die Gestaltung der Benutzeroberfläche des iPhone-X ist ein sicherer Bereich erforderlich. Hier finden Sie grundlegende Richtlinien zum Entwerfen der Benutzeroberfläche für das iPhone-X mithilfe des Safe Area Layout
quelle
Ich benutze tatsächlich eine Erweiterung dafür und steuere, ob es ios 11 ist oder nicht.
quelle
self.safeAreaLayoutGuide
anstelle vonself.layoutMarginsGuide
. Der in dieser Antwort verwendete Safe funktionierte korrekt, damit ich im sicheren Bereich bleiben konnte! Eine Sache, die ich vorschlagen würde, zu ändern, wäre,leadingAnchor
undtrailingAnchor
anstelle vonleftAnchor
und zu verwendenrightAnchor
. Bravo!SafeAreaLayoutGuide
istUIView
Eigentum,Verwenden Sie diese Option,
safeAreaLayoutGuide
um zu vermeiden, dass unsere Objekte von abgerundeten Ecken, Navigationsleisten, Registerkartenleisten, Symbolleisten und anderen Ahnenansichten abgeschnitten / überlappt werden.Wir können
safeAreaLayoutGuide
Objekt- bzw. Objektbeschränkungen erstellen .Einschränkungen für Portrait + Landscape sind -
UILayoutGuide
safeAreaLayoutGuide
quelle
viewDidAppear
, es sei denn, Sie wissen genau, was Sie tun.viewDidAppear
wird mehrmals aufgerufen und daher werden Ihre Einschränkungen bei jedem Aufruf dupliziert.Für diejenigen unter Ihnen, die SnapKit verwenden , genau wie ich, besteht die Lösung darin, Ihre Einschränkungen so zu verankern
view.safeAreaLayoutGuide
:quelle
Ich verwende dies, anstatt dem layoutMarginsGuide Einschränkungen für führende und nachfolgende Ränder hinzuzufügen:
Bitte überprüfen Sie auch die Option für eine niedrigere Version von ios 11 aus Krunals Antwort.
quelle
Verwenden Sie
UIWindow
oderUIView
'ssafeAreaInsets
.bottom
.top
.left
.right
quelle
Wenn Sie Einschränkungen mit visuellem Format verwenden, erhalten Sie kostenlos Respekt für den sicheren Bereich.
quelle
Safe Area Extension Für Objective-C
quelle
Swift 4.2 und 5.0. Angenommen, Sie möchten in viewBg die Einschränkungen Leading, Trailing, Top und Bottom hinzufügen. Sie können also den folgenden Code verwenden.
quelle
Mit dieser Erweiterung können Sie eine UIVIew auf ihre Übersicht und Aufsicht + safeArea beschränken:
quelle
Sie können view.safeAreaInsets wie hier beschrieben verwenden: https://www.raywenderlich.com/174078/auto-layout-visual-format-language-tutorial-2
Codebeispiel (entnommen aus raywenderlich.com):
quelle