¿Cómo funciona clipsToBounds?
Me gustaría saber cómo usar la propiedad UIView
clipsToBounds
.
La documentación oficial dice lo siguiente:
clipsToBounds
propiedadUn valor booleano que determina si las subviews se limitan a límites de la vista.
Discusión
Establecer este valor enYES
hace que las subviews se recorten a la límites del receptor. Si se establece enNO
, subviews cuyos marcos se extienden más allá de los límites visibles de el receptor no está cortado. Predeterminado el valor esNO
.
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
?
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:
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:
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:
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
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