2012-07-04 6 views
13

내 스크롤에는 cornerRadius = 10.0masksToBounds = YES의보기가 있습니다.masksToBounds와 cornerRadius 사이의 관계는 무엇입니까?

이로 인해 스크롤보기를 스크롤 할 때 성능 문제가 발생합니다. 각보기의 shouldRasterizeYES으로 설정했지만이 문제는 해결되지 않았습니다.

그러나이 문제에 대한 해결책을 알고 있습니다. 그게 masksToBoundNO으로 설정되어 있습니다. (masksToBound's 기본값은 NO입니다.) masksToBoundNO이지만 내보기의 모퉁이가 여전히 곡선이며 성능 문제도 해결됩니다.

cornerRadiusmasksToBounds 사이의 관계에 대해 알고 싶습니다. 이 설정으로 예기치 않은 문제가 발생하는 것을 두려워합니다.

감사합니다.

답변

23

cornerRadius을 제공 한 후 수신기의 둥근 모서리를 그리는 데 사용되는 반경을 지정합니다.

이제 서브 레이어가 수신기의 경계에 잘리는 지 결정하는 masksToBounds에 따라 다릅니다. 따라서 YES으로 설정하면 레이어 경계에 일치하는 암시 적 마스크가 cornerRadius 속성의 효과를 포함하여 레이어에 적용됩니다. YES으로 설정되고 mask 속성이 지정되면 두 마스크가 곱 해져 실제 마스크 값을 가져옵니다. 예를 들어

:

당신은 이미지 내용과 CALayer에 그 설정하면 이미지가 여전히 모서리 반경 경계를 벗어난 것입니다. sublayer.masksToBoundsYES으로 설정하여 문제를 해결할 수 있습니다. 하지만 그렇게하면 그림자가 보이지 않게 될 것입니다.

-2

실제로는 코너 반경을 호출 할 때 통과 한 반지름과 MaskToBound에서 뷰를 자릅니다. 예 : 자른 부분에 투명하게 보이게합니다. ...

+3

분명하지 않고 아마도 잘못되었을 수도 있습니다. –