Какова связь между masksToBounds и cornerRadius?
Мой свиток имеет несколько видов, которые cornerRadius = 10.0
и masksToBounds = YES
.
Это вызывает проблемы с производительностью для прокрутки моего прокрутки. Хотя я пробовал каждое представление shouldRasterize
установлено YES
, проблема не решена.
Однако я знаю решение этой проблемы. Это то, что masksToBound
установлено NO
. (masksToBound's
значение по умолчанию - NO)
Хотя masksToBound
NO
, мои углы обзора по-прежнему имеют кривую, и проблема с производительностью также решена.
Я хочу знать о связи между cornerRadius
и masksToBounds
. Я боюсь неожиданных проблем с этой настройкой.
Спасибо.
Ответы
Ответ 1
После предоставления cornerRadius
, который определяет радиус, используемый для рисования округлых углов фона приемников.
Теперь это зависит от masksToBounds
, который определяет, привязаны ли подслои к границам приемников. Поэтому, если оно установлено на YES
, к слою применяется неявная маска, соответствующая границам слоя, включая эффекты свойства cornerRadius
. Если установлено значение YES
и указано свойство маски, две маски умножаются для получения фактических значений маски.
Например:
Если вы установите, что на CALayer
с содержимым изображения, изображение все равно будет выведено за пределы радиуса радиуса. Вы можете решить эту проблему, установив sublayer.masksToBounds
на YES
; но если вы это сделаете, тени не появятся, потому что они будут замаскированы!
Ответ 2
Нет никакого конкретного отношения. Фактически, когда вы вызываете Угол Радиуса, он обрезает вид, в каком радиусе вы прошли, и MaskToBound: Да сделайте его прозрачным для той части, которую вы обрезали, иначе она будет видна...