framework - uikit ios
¿Cómo funciona clipsToBounds? (1)
Si mi supervista es una caja que mide 10 unidades en cada lado, y mi subvista tiene 20 unidades de ancho, con clipsToBounds
configurados en YES
, solo veré la parte de la subvista que se ajusta dentro de los límites de la supervista. De lo contrario, si clipsToBounds
está establecido en NO
, veré toda la subvista, incluso las partes fuera de la supervista (suponiendo que aún estemos en la pantalla).
Como ejemplo visual, considere las siguientes vistas configuradas en el guión gráfico:
Esta es una UIView
blanca, una etiqueta en la esquina superior izquierda con un simple "1" o "2", por lo que puedo hablar de esto como view1
o view2
. Además, la vista negra es del mismo tamaño que la vista blanca, pero su origen está en el centro de la vista en blanco.
En el método viewDidLoad
del controlador de viewDidLoad
, tenemos el siguiente código:
C objetivo:
- (void)viewDidLoad {
[super viewDidLoad];
self.view1.clipsToBounds = YES;
self.view2.clipsToBounds = NO;
}
Rápido:
override func viewDidLoad() {
super.viewDidLoad()
self.view1.clipsToBounds = true
self.view2.clipsToBounds = false
}
Cuando ejecutamos el código y observamos en el simulador o en el dispositivo, obtenemos los siguientes resultados:
Entonces, a pesar de que estas vistas se configuran de manera idéntica (excepto clipsToBounds
), se ven diferentes. Esto es lo que clipsToBounds
hace. Establecerlo en YES
proporcionará el resultado superior, mientras que establecerlo en NO
proporciona el resultado final.
Si depuramos la jerarquía de vistas, podemos ver más claramente que las casillas negras realmente se extienden más allá de las fronteras de la vista blanca, pero solo la vista 2 muestra esto cuando la aplicación se está ejecutando:
Me gustaría saber cómo usar la propiedad clipsToBounds
.
La documentación oficial dice lo siguiente:
propiedad
clipsToBounds
Un valor booleano que determina si las subvistas están confinadas 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 subvistas cuyas tramas se extienden más allá de los límites visibles del receptor no se recortan. El valor predeterminado esNO
.
Pero no estoy seguro de lo que esto significa exactamente. ¿Cómo debería usar clipsToBounds
? ¿Cuáles son las consecuencias de establecer esta propiedad en YES
exactamente? O a NO
?