Как вы отображаете пользовательские UIViews в InterfaceBuilder?

Мне нравится разрабатывать новые UIViews и UIControls, которые реализуют свой собственный -drawRect: метод. У меня это хорошо работает, особенно при составлении с использованием UIViews в Interface Builder.

Но создание их в Интерфейсном Разработчике раздражает, потому что они просто отображаются как скучные простые прямоугольники.

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

Можно ли каким-либо образом структурировать свой проект так, чтобы Interface Builder отображал мои пользовательские представления?


person Frank Krueger    schedule 30.01.2009    source источник


Ответы (2)


Для этого вам фактически нужно создать надстройку для Interface Builder, который использует ваш настраиваемый класс. Как только вы создадите и установите свой плагин, вы сможете перетаскивать экземпляры вашего класса (вашего представления) в другое окно / представление / что угодно, как и любой другой элемент управления. Чтобы приступить к созданию подключаемых модулей IB, см. Руководство по программированию подключаемого модуля Interface Builder. Также я рекомендую взглянуть на книгу Аарона Хиллегасса, Программирование какао для Mac OS X. Помимо того, что он очень хорошо написан и прост для понимания, в нем есть глава о создании ваших собственных элементов управления IB Palette.

person Jason Coco    schedule 30.01.2009
comment
Просто комментарий для людей, пришедших к этому посту в 2012+: Xcode 4 больше не поддерживает плагины IB. Не повезло тебе. - person Constantino Tsarouhas; 08.12.2012
comment
Спасибо @RandyMarsh за то, что спас меня, возможно, 30-60 минут :) - person Ege Akpinar; 06.01.2013
comment
@EgeAkpinar Пожалуйста. :-) И мне очень жаль, что вы продолжаете искать неэлегантное решение вашей проблемы, каким бы оно ни было. :-п - person Constantino Tsarouhas; 07.01.2013
comment
В моей копии книги Хиллегасса (третье издание, такое же, как и то, на которое вы ссылались) я не могу найти главу о создании ваших собственных элементов управления IB Palette. Не могли бы вы дать мне номер страницы / название главы? - person 11684; 06.03.2013
comment
Я также не могу найти отличий между индексом онлайн-версии и моей копии. Вы уверены, что это есть в той книге? Между прочим, ссылка на Руководство по программированию подключаемых модулей Apple IB не работает. - person 11684; 06.03.2013
comment
Чтобы было ясно: это невозможно с использованием Xcode 4+ и раскадровок? - person Daniel; 19.04.2013
comment
@JasonCoco Я обновил ссылку, 11684 как насчет обновления ссылки самостоятельно, имя документа не изменится;) и google дает вам возможность искать даже ТОЛЬКО имя ..... - person Alex Cio; 24.03.2015

Этого можно достичь, пометив свой подкласс UIView с помощью @IBDesignable. Как только вы это сделаете, ваши пользовательские представления будут отображаться в Интерфейсном Разработчике. Вы даже можете добавить параметры, которые можно настроить, пометив их как @IBInspectable. Вот пример Swift:

@IBDesignable class customView: UIView {

    @IBInspectable var count: Int = 0

}

Более подробную информацию можно найти в статье о NSHipster.

person tebs1200    schedule 13.02.2017
comment
Используя вышеуказанный подход, мы не можем добавить пользовательское представление в библиотеку объектов. - person ManiaChamp; 08.03.2017
comment
@ManiaChamp, Вы правы, но вопрос не в том, чтобы добавить представление в библиотеку объектов. - person tebs1200; 09.03.2017
comment
Этот вопрос связан с другим, который спрашивает, как добавить настраиваемое представление в библиотеку объектов - поэтому многие из нас приходят сюда в поисках этого. ;) - person leanne; 13.08.2017