Подтвердить что ты не робот

Какова связь между masksToBounds и cornerRadius?

Мой свиток имеет несколько видов, которые cornerRadius = 10.0 и masksToBounds = YES.

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

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

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

Спасибо.

4b9b3361

Ответ 1

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

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

Например:

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

Ответ 2

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