2012-07-04 2 views
13

У моего свитка есть несколько видов, которые cornerRadius = 10.0 и masksToBounds = YES.Какова связь между masksToBounds и cornerRadius?

Это вызывает проблемы с производительностью для прокрутки моего прокрутки. Хотя я пробовал каждую точку зрения shouldRasterize установлен YES, проблема не решена.

Однако я знаю решение этой проблемы. Это то, что установлено masksToBoundNO. (masksToBound's значение по умолчанию равно NO) Хотя masksToBound - NO, у моих углов зрения все еще есть кривая, и проблема с производительностью также решена.

Я хочу знать о связи между cornerRadius и masksToBounds. Я боюсь неожиданных проблем с этой настройкой.

спасибо.

ответ

23

После предоставления cornerRadius, который определяет радиус, используемый для рисования округлых углов фона приемника.

Теперь это зависит от masksToBounds, который определяет, будут ли подслои обрезаны до границ приемника. Поэтому, если он установлен в YES, к слою применяется неявная маска, соответствующая границам слоя, включая эффекты свойства cornerRadius. Если установлено значение YES и задано свойство mask, две маски умножаются для получения фактических значений маски.

Например:

Если вы установили, что на CALayer с содержимым изображений, изображение все еще будет нарисовано за пределами границ углового радиуса. Вы можете решить эту проблему, установив sublayer.masksToBounds на номер YES; но если вы это сделаете, тени не появятся, потому что они будут замаскированы!

-2

Нет никакого конкретного отношения. Фактически, когда вы вызываете Угол Радиуса, он обрезает вид, в каком радиусе вы прошли, и MaskToBound: Да сделайте его прозрачным для той части, которую вы обрезали, иначе она будет видна ...

+3

Не ясно и, вероятно, неверно. –