Как вы отображаете пользовательские UIViews в InterfaceBuilder? - PullRequest
18 голосов
/ 30 января 2009

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

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

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

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

Ответы [ 2 ]

18 голосов
/ 30 января 2009

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

0 голосов
/ 13 февраля 2017

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

@IBDesignable class customView: UIView {

    @IBInspectable var count: Int = 0

}

На NSHipster есть статья , в которой более подробно.

...