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

Свойство UIView clipsToBounds: улучшает ли производительность?

В документации говорится, что свойство clipsToBounds для UIView будет привязывать чертеж к границам, а точнее, что subView не может рисовать за пределами границ superView.

Звучит неплохо, но что это значит на практике?

Если я установил значение YES, тогда мой subView будет автоматически рисовать только те части, которые не находятся за пределами superView. поэтому он увеличивает общую производительность или мне все еще нужно убедиться, что я не создаю никаких видов, которые не видны, т.е. внутри UIScrollView?

4b9b3361

Ответ 1

Я думаю, что это наоборот: включение отсечения ухудшает производительность, потому что ему нужно настроить обтравочную маску. Я смутно помню, как я читал это где-то, но теперь я не могу его найти.

Ответ 2

Вариант использования для clipToBounds больше подходит для subviews, которые частично находятся за пределами основного вида. Например, у меня есть (круговой) subview на краю его родительского (прямоугольного) UIView. Если вы установите для clipToBounds значение YES, будет показано только половина круга/поднабора. Если установлено значение НЕТ, появится весь круг. Просто столкнулся с этим, поэтому хотел поделиться.

Ответ 3

(возможно) поражение производительности является только детерминированным, если вы знаете иерархию представления. Как упоминалось выше, обычно рендеринг будет использовать циклы GPU, чтобы нарисовать представление, ЕСЛИ какой-либо вид в иерархии использует drawRect:. Это не влияет на приложение OpenGL ES, поскольку drawRect: в этом типе приложений не указывается.

По моему мнению, определение и отображение обрезанной области может занимать меньше циклов, чем фактически вычислять/рисовать/смешивать весь вид. Начиная с обрезание OpenGL ES 2.0 можно вычислить на графическом процессоре.