Свойство IBInspectable UIView

Могу ли я сделать мой UIView @property доступным для проверки?

@interface Superview : UIView 
    @property (nonatomic, weak, readonly) IBInspectable UIButton *stopButton;
    @property (nonatomic, weak, readonly) IBInspectable PKCircleProgressView *circleProgressView;
@end

Я создал проектируемое представление PKCircleProgressView и хочу, чтобы его можно было редактировать из IB. Также я создал еще одно проектируемое представление, которое содержит PKCircleProgressView в качестве подвида, и я хочу, чтобы его также можно было редактировать.

Есть ли способ редактировать свойства CircleProgressView, если я использую Superview в IB?

У меня возникла только одна идея - создать общий протокол для обоих представлений и реализовать такие методы, как:

- (void)setProgress:(CGFloat)progress {
    self.circleProgressView.progress = progress;
}

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


person BergP    schedule 30.05.2015    source источник


Ответы (2)


IBInspectable не поддерживает UIView или его подтипы. Он поддерживает простые значения.

Если ваше пользовательское представление прогресса — IBDesignable, почему бы не установить для его свойств, таких как радиус и цвет переднего плана, значение IBInspectable, а в построителе интерфейса выбрать представление прогресса и изменить свойства представления прогресса?

Если вы создаете суперпредставление IBDesignable, вы можете открыть проверяемые свойства его кнопки и представления прогресса, используя что-то вроде шаблона декоратора.

Документация Apple

person Tobias    schedule 30.05.2015

Нет, вы не можете сделать UIView Inspectable. Использование IBInspectable предназначено только для настройки закодированного свойства «значение ключа» экземпляра в NIB или раскадровке. Предположим, если ключом будет UIView, то каково будет его значение? Для UIView не будет значения, поэтому вы не можете сделать UIView Inspectable. Но мы можем сделать атрибуты UIView проверяемыми, например:

Цвет фона UIView, ширина, высота и т. д.

Пример проекта: IBDesignable и IBInspectable

person Kusal Shrestha    schedule 01.06.2015