¿Cómo funciona clipsToBounds?


Me gustaría saber cómo usar la propiedad UIView clipsToBounds.

La documentación oficial dice lo siguiente:

clipsToBounds propiedad

Un valor booleano que determina si las subviews se limitan a límites de la vista.

Discusión
Establecer este valor en YES hace que las subviews se recorten a la límites del receptor. Si se establece en NO, subviews cuyos marcos se extienden más allá de los límites visibles de el receptor no está cortado. Predeterminado el valor es NO.

Pero no tengo claro qué significa esto exactamente. ¿Cómo debo usar clipsToBounds? ¿Cuáles son las consecuencias de establecer esta propiedad en YES exactamente? O a NO?

Author: nhgrif, 2013-12-08

2 answers

Si mi superview es una caja que mide 10 unidades en cada lado, y mi subview es de 20 unidades de ancho, con clipsToBounds establecido en YES, solo veré la parte del subview que encaja dentro de los límites de la superview. De lo contrario, si clipsToBounds se establece en NO, voy a ver todo el subview, incluso las partes fuera de la superview (suponiendo que todavía estamos en la pantalla).

Como ejemplo visual, considere las siguientes vistas configuradas en el guion gráfico:

introduzca la descripción de la imagen aquí

Este es un blanco UIView, un etiqueta en la esquina superior izquierda con un simple "1" o "2" para que pueda discutir estos 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 blanca.

En el método viewDidLoad del controlador de vista, tenemos el siguiente código:

Objetivo-C:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view1.clipsToBounds = YES;
    self.view2.clipsToBounds = NO;
}

Swift:

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 lo siguiente resultados:

introduzca la descripción de la imagen aquí

Entonces, a pesar de que estas vistas están configuradas de manera idéntica (excepto clipsToBounds), se ven diferentes. Esto es lo que hace clipsToBounds. Configurarlo a YES proporcionará el resultado superior, mientras que configurarlo a NO proporciona el resultado inferior.

Si depuramos la jerarquía de la vista, podemos ver más claramente que las cajas negras se extienden más allá de los boarders de la vista blanca, pero solo la vista 2 muestra esto cuando la aplicación se está ejecutando:

introduzca la descripción de la imagen aquí

 223
Author: nhgrif,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-21 21:32:24

Uiview y textfield con shadow Swift 4

self.txtCurrent.layer.shadowOpacity = 0.5
self.txtCurrent.layer.shadowOffset = CGSize(width: 1.0, height: 1.0)          
self.txtCurrent.layer.shadowRadius = 5.0
self.txtCurrent.layer.shadowColor = UIColor.black.cgColor
self.txtCurrent.layer.masksToBounds = false

Uiview con sombra

self.yourview.layer.shadowOpacity = 0.5
self.yourview.layer.shadowOffset = CGSize(width: 1.0, height: 1.0)
self.yourview.layer.shadowRadius = 5.0
self.yourview.layer.shadowColor = UIColor.black.cgColor
self.yourview.layer.masksToBounds = false
 0
Author: Shakeel Ahmed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-02 16:50:47