Как глобально стилизовать элементы, которые не поддерживают внешний вид - PullRequest
1 голос
/ 24 марта 2012

Я узнал, что в iOS 5 свойства, помеченные UI_APPEARANCE_SELECTOR, могут быть стилизованы с использованием внешнего вида. Например, [[UINavigationBar появление] setTintColor: ....]. Тем не менее, я, кажется, не в состоянии оформить все элементы. У UIButton, например, нет свойств, помеченных как UI_APPEARANCE_SELECTOR, поэтому я не могу использовать вышеописанную технику для его стилизации.

Мой вопрос: как мне лучше всего стилизовать элементы в глобальном масштабе (все виды в приложении), когда я не могу использовать внешний вид?

Прямо сейчас я определил некоторые цвета, шрифты, смещения теней и т. Д., Которые я использую в своем коде в разных местах. Это позволяет мне изменять внешний вид и поведение многих элементов, но все же не позволяет мне стилизовать все экземпляры определенного объекта только одной строкой кода.

Редактировать

В отсутствие лучших решений я создал ряд категорий , используя следующие простые методы:

+ (UIButton *)customLabelWithFrame:(CGRect)frame andText:(NSString *)text;

Также я обнаружил, что - в сочетании с описанными категориями - растягиваемые изображения приятны и полезны.

С учетом вышесказанного я могу стилизовать в глобальном стиле, однако я не удовлетворен результатом и все еще надеюсь найти лучшее решение

Ответы [ 2 ]

0 голосов
/ 10 апреля 2012

Как насчет стандартных подклассов или фабричных классов, как вы упомянули сами?Для кнопок я использую фабричные классы самостоятельно.

0 голосов
/ 10 апреля 2012

Я думаю, что действительно хорошим решением может стать способ разработки интерфейсов для Android. Android использует XML-файлы для определения пользовательского интерфейса. На самом деле, я работаю над библиотекой, которая нацелена на то, чтобы дать проектам, над которыми я работаю, те же самые возможности. Это все еще в стадии разработки / эксперимента и, как таковой, действительно грязный код ( вы были предупреждены! ), но он может дать вам некоторые идеи.

Пример проекта можно скачать здесь: http://dl.dropbox.com/u/6487838/WSLayoutManager.zip

Поэкспериментируйте с файлами XML, добавив элементы управления. Создавать пользовательские классы управления и создавать их экземпляры из файла XML и т. Д. Это забавная штука:)

...