Как я могу создать подкласс CALayer для возврата предварительно стилизованного слоя?

StackOverflow https://stackoverflow.com/questions/823135

Вопрос

Как вы создаете подкласс CALayer, чтобы возвращать слой с уже установленными свойствами стиля?

Так что:

MyCustomLayer *layer = [MyCustomLayer layer];

создаст слой с этими свойствами;

layer.backgroundColor = sweetBackgroundColor.CGColor;
layer.borderColor = sweetBorderColor.CGColor;

layer.borderWidth = 2.0;
layer.cornerRadius = 8.0;

Так что я могу просто установить его рамку и добавить его в дерево.

Но я думаю, что мой вопрос на самом деле может быть таков: как подклассифицировать объект, чтобы у него уже были свойства, заданные при создании. Возможно ли это?

Это было полезно?

Решение

Просто переопределите -init (назначенный инициализатор для CALayer) в своем подклассе и установите эти свойства в своем переопределении. Любой метод создания, включая -layer, должен заканчиваться маршрутизацией через назначенный инициализатор, что означает, что ваши дополнительные настройки будут выполняться даже для вспомогательных конструкторов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top