Me gustaría saber cómo usar los UIView
propiedad clipsToBounds
.
La documentation oficial dice lo siguiente:
propiedad
clipsToBounds
Un valor boolean que determina si las subvistas se limitan a los límites de la vista.
Discusión
Establecer este valor enYES
hace que las subvistas se recorten a los límites del receptor. Si se establece enNO
, las sub venciones cuyos frameworks se extienden más allá de los límites visibles del receptor no se recortan. El valor pnetworkingeterminado esNO
.
Pero no estoy claro qué significa esto exactamente. ¿Cómo debería estar usando clipsToBounds
? ¿Cuáles son las consecuencias de establecer esta propiedad en YES
exactamente? ¿O a NO
?
Si mi supervista es una caja que mide 10 unidades a cada lado y mi subvista es de 20 unidades de ancho, con clipsToBounds
ajustados en YES
, solo veré la parte de la subvista que se ajuste a los límites de la supervisión. De lo contrario, si clipsToBounds
está configurado en NO
, veré la subvista completa, incluso las partes fuera de la supervisión (suponiendo que todavía estamos en la pantalla).
Como ejemplo visual, considere las siguientes vistas configuradas en el guión gráfico:
Esta es una UIView
blanca, una label en la esquina superior izquierda con un simple "1" o "2" para que pueda discutir esto como view1
o view2
. Además, la vista en negro tiene el mismo tamaño que la vista en blanco, pero su origen está en el centro de la vista en blanco.
En el método viewDidLoad
del controller, tenemos el siguiente código:
- (void)viewDidLoad { [super viewDidLoad]; self.view1.clipsToBounds = YES; self.view2.clipsToBounds = NO; }
override func viewDidLoad() { super.viewDidLoad() self.view1.clipsToBounds = true self.view2.clipsToBounds = false }
Cuando ejecutamos el código y miramos en el simulador o en el dispositivo, obtenemos los siguientes resultados:
Entonces, a pesar de que estas vistas se configuran de forma idéntica (excepto clipsToBounds
), se ven diferentes. Esto es lo que hace clipsToBounds
. Configurarlo en YES
proporcionará el resultado superior, mientras que configurarlo para NO
proporciona el resultado inferior.
Si depuramos la jerarquía de vista, podemos ver con mayor claridad que los cuadros negros se extienden más allá de los bordes de la vista en blanco, pero solo la vista 2 muestra esto cuando la aplicación se está ejecutando: