Как я могу создать подкласс CALayer для возврата предварительно стилизованного слоя?
-
05-07-2019 - |
Вопрос
Как вы создаете подкласс CALayer, чтобы возвращать слой с уже установленными свойствами стиля?
Так что:
MyCustomLayer *layer = [MyCustomLayer layer];
создаст слой с этими свойствами;
layer.backgroundColor = sweetBackgroundColor.CGColor;
layer.borderColor = sweetBorderColor.CGColor;
layer.borderWidth = 2.0;
layer.cornerRadius = 8.0;
Так что я могу просто установить его рамку и добавить его в дерево.
Но я думаю, что мой вопрос на самом деле может быть таков: как подклассифицировать объект, чтобы у него уже были свойства, заданные при создании. Возможно ли это?
Решение
Просто переопределите -init (назначенный инициализатор для CALayer) в своем подклассе и установите эти свойства в своем переопределении. Любой метод создания, включая -layer, должен заканчиваться маршрутизацией через назначенный инициализатор, что означает, что ваши дополнительные настройки будут выполняться даже для вспомогательных конструкторов.