Si mi supervista es una caja que mide 10 unidades en cada lado, y mi subvista tiene 20 unidades de ancho, con el clipsToBounds
ajuste a YES
, solo veré la parte de la subvista que se ajuste a los límites de la supervista. De lo contrario, si clipsToBounds
está configurado en NO
, veré la subvista completa, incluso las partes fuera de la supervista (suponiendo que todavía estemos en la pantalla).
Como ejemplo visual, considere las siguientes vistas configuradas en el guión gráfico:
Esta es una UIView
etiqueta blanca en la esquina superior izquierda con un simple "1" o "2" para que pueda discutirlos 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 viewDidLoad
método del controlador de vista , 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 lo miramos 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
proporcionará el resultado inferior.
Si depuramos la jerarquía de la vista, podemos ver más claramente que las dos cajas negras se extienden más allá de los límites de la vista blanca, pero solo la vista 2 muestra esto cuando la aplicación se está ejecutando:
UITextView
sombras no son visibles, si laclipsToBounds
propiedad es igual atrue
; ? Si es asífalse
, funciona bien