Можете ли вы добавить IBDesignable свойства в UIView, используя категории / расширения?

Для тех, кто не знает, о чем я говорю, в Xcode 6.0 добавлены новые функции, IBDesignable и IBInspectable.

Когда вы помечаете свои собственные представления с помощью свойств IBInspectable, эти свойства отображаются в Инспекторе атрибутов в IB.

Аналогично, когда вы помечаете пользовательский подкласс UIView с помощью IBDesignable, XCode компилирует ваши представления и вызывает код для визуализации ваших объектов представления прямо в окне XCode, чтобы вы могли видеть, как они выглядят.

Техника добавления атрибутов IBDesignable и IBInspectable в настраиваемые представления практически идентична в Swift и Objective-C. Свойства IBInspectable появляются в Инспекторе Атрибутов Интерфейсного Разработчика независимо от того, какой язык вы используете для их определения.

Я создал категорию UIView в Objective-C и расширение UIView в Swift, которое продвигает свойства borderWidth, cornerRadius, borderColor и layerBackgroundColor базового слоя представления как свойства представления. Если вы изменяете свойство, расширение / категория выполняет преобразование типов по мере необходимости и направляет изменение в слой.

IBInspectable часть прекрасно работает. Я вижу и могу установить новые свойства в инспекторе атрибутов IB.

Я мог поклясться, что на прошлой неделе атрибут IBDesignable в моей категории / расширении просмотра тоже работал, и я мог видеть мой пользовательский рендеринг категории UIView в IB с его измененными атрибутами слоя. На этой неделе это не работает.

Я галлюцинировал?

Могут ли категории / расширения существующих системных классов нарисовать свой пользовательский интерфейс в Интерфейсном Разработчике, когда они настроены с IBDesignable?

Ответы на вопрос(0)

Ваш ответ на вопрос