Como no uso guiones gráficos para crear mis vistas, me preguntaba si existe la opción "Usar guías de áreas seguras" mediante programación o algo así.
Intenté anclar mis puntos de vista a
view.safeAreaLayoutGuide
pero siguen superponiendo la muesca superior en el simulador de iPhone X.
ios
swift
iphone-x
safearealayoutguide
Phillip
fuente
fuente
view.safeAreaInsets
? ¿Intentaste esto?Respuestas:
Aquí hay un código de muestra (Ref de: Safe Area Layout Guide ):
Si crea sus restricciones en el código, use la propiedad safeAreaLayoutGuide de UIView para obtener los anclajes de diseño relevantes. Vamos a recrear el ejemplo anterior de Interface Builder en código para ver cómo se ve:
Suponiendo que tenemos la vista verde como una propiedad en nuestro controlador de vista:
Podríamos tener una función para configurar las vistas y restricciones llamadas desde viewDidLoad:
Cree las restricciones de margen inicial y final como siempre utilizando la guía layoutMarginsGuide de la vista raíz:
Ahora, a menos que esté apuntando a iOS 11 y posterior, deberá ajustar las restricciones de la guía de diseño del área segura con #available y volver a las guías de diseño superior e inferior para versiones anteriores de iOS:
Resultado:
Aquí está la documentación oficial del desarrollador de Apple para la guía de diseño de áreas seguras
Se requiere Safe Area para manejar el diseño de la interfaz de usuario para iPhone-X. Aquí hay una guía básica sobre cómo diseñar una interfaz de usuario para iPhone-X usando el diseño de área segura
fuente
De hecho, estoy usando una extensión para él y controlando si es ios 11 o no.
fuente
self.safeAreaLayoutGuide
lugar deself.layoutMarginsGuide
. ¡El seguro usado en esta respuesta funcionó correctamente para que me mantuviera dentro del área segura! Una cosa que sugeriría cambiar sería usarleadingAnchor
y entrailingAnchor
lugar deleftAnchor
yrightAnchor
. ¡Bravo!SafeAreaLayoutGuide
esUIView
propiedad,Úselo
safeAreaLayoutGuide
para evitar que nuestros objetos se recorten / superpongan desde esquinas redondeadas, barras de navegación, barras de pestañas, barras de herramientas y otras vistas anteriores.Podemos crear
safeAreaLayoutGuide
objetos y establecer restricciones de objetos respectivamente.Las restricciones para retrato + paisaje son:
UILayoutGuide
safeAreaLayoutGuide
fuente
viewDidAppear
, a menos que sepa absolutamente lo que está haciendo.viewDidAppear
se llama varias veces y, por lo tanto, sus restricciones se duplicarán cada vez que se llame.Para aquellos de ustedes que usan SnapKit , al igual que yo, la solución es anclar sus restricciones de esta
view.safeAreaLayoutGuide
manera:fuente
Estoy usando esto en lugar de agregar restricciones de margen inicial y final al layoutMarginsGuide:
También marque la opción para la versión inferior de ios 11 de la respuesta de Krunal.
fuente
Uso
UIWindow
oUIView
'ssafeAreaInsets
.bottom
.top
.left
.right
fuente
Use restricciones con formato visual y obtendrá respeto por el área segura de forma gratuita.
fuente
Extensión de área segura para Objective-C
fuente
Swift 4.2 y 5.0. Suponga que desea agregar restricciones inicial, final, superior e inferior en viewBg. Entonces, puede usar el siguiente código.
fuente
Esta extensión le ayuda a restringir un UIVIew a su superview y superview + safeArea:
fuente
Puede utilizar view.safeAreaInsets como se explica aquí https://www.raywenderlich.com/174078/auto-layout-visual-format-language-tutorial-2
ejemplo de código (tomado de raywenderlich.com):
fuente