¿Cómo funciona clipsToBounds?

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 en YES hace que las subvistas se recorten a los límites del receptor. Si se establece en NO , las subvistas cuyas ttwigs se extienden más allá de los límites visibles del receptor no se recortan. El valor predeterminado es NO .

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 ?

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:

enter image description here

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 objective:

 - (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:

enter image description here

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:

enter image description here

uiview y textfield con sombra 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