2012-07-04 19 views
13

Mi desplazamiento tiene algunas vistas que son cornerRadius = 10.0 y masksToBounds = YES.¿Cuál es la relación entre masksToBounds y cornerRadius?

Esto provoca un problema de rendimiento al desplazar mi vista de desplazamiento. Aunque probé cada vista shouldRasterize se establece YES, el problema no está resuelto.

Sin embargo, conozco la solución para este problema. Eso es lo que masksToBound se establece en NO. (El valor predeterminado de masksToBound's es NO) Aunque masksToBound es NO, las esquinas de mis vistas aún tienen curva y el problema de rendimiento también se resuelve.

Quiero saber acerca de la relación entre cornerRadius y masksToBounds. Tengo miedo de problemas inesperados con esta configuración.

Gracias.

Respuesta

23

Después de proporcionar cornerRadius que especifica un radio utilizado para dibujar las esquinas redondeadas del fondo del receptor.

Ahora depende de masksToBounds que determina si las subcapas se recortan a los límites del receptor. Por lo tanto, si se establece en YES, se aplica a la capa una máscara implícita que coincida con los límites de la capa, incluidos los efectos de la propiedad cornerRadius. Si se establece en YES y se especifica una propiedad de máscara, las dos máscaras se multiplican para obtener los valores de máscara reales.

Por ejemplo:

Si se establece que en un CALayer con contenido de la imagen, la imagen fija se dibujará fuera del límite del radio de la esquina. Puede resolver esto configurando sublayer.masksToBounds en YES; pero si haces eso, ¡las sombras no aparecerán porque quedarán enmascaradas!

-2

No hay ninguna relación específica ... en realidad cuando llames al Radio de Esquina recortarás la vista a qué radio has pasado y MaskToBound: Sí, harás que sea transparente para la parte que hayas recortado, de lo contrario sería visible ...

+3

No es claro y probablemente también incorrecto. –

Cuestiones relacionadas