Следует ли вызывать чертеж CAShapeLayers от drawRect()
или layoutSubviews()
?Пользовательский рисунок UIView с layoutSubviews vs drawRect
Согласно документации Apple по UIView, операции рисования должны быть помещены в drawRect()
.
Однако это не относится к сессии WWDC Кевина Катей: What's New in Interface Builder (где он демонстрирует процесс создания пользовательского UIView, доступного в Interface Builder).
Во время демонстрации он выполняет чертеж вида в layoutSubviews
, а не drawRect
.
Его объяснение было то, что:
Если бы я реализовать DrawRect, что не собирается получить нам лучшую производительность; в то время как использование подслоев и подзаголовков принесет нам действительно хорошую производительность.
Из того, что я до сих пор читал в StackOverflow, кажется, что переопределение метода drawRect()
может привести к снижению производительности. Частично это связано с setNeedsDisplay
, что приводит к дорогостоящим ручным перерисовкам.
Но просматривая документы Apple и приложения реального мира. Имеет смысл, что drawRect()
должен нести ответственность за нанесение изображения и layoutSubviews()
.