Как сказал CodaFI, если вы используете iOS 5 или выше, у вас уже есть функция создания тем.Это работает так:
Добавьте протокол <IAppearanceContainer>
к классу.
Украсьте свойство, которое вы намереваетесьизменить с UI_APPEARANCE_SELECTOR
.Пример:
@interface UINavigationBar : ... <code><IAppearanceContainer></code>
@property(nonatomic,retain) UIColor *tintColor UI_APPEARANCE_SELECTOR;
@end
- Изменить цвет для всех экземпляров класса:
[[UINavigationBar appearance] setTintColor:[UIColor redColor]];
Пример выше - UINavigationBar
, но он будет работать слюбой пользовательский класс.Чтобы увидеть объекты, уже поддерживаемые в iOS 6.1, проверьте документацию или выполните следующие команды:
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/UIKit.framework/Headers
grep -H UI_APPEARANCE_SELECTOR ./* | sed 's/ __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0) UI_APPEARANCE_SELECTOR;//'
Допустим, вам нужны модульные темы:
- Напишите большой файл plist с помощьювсе шрифты, цвета, музыка, а что нет.Каждый из этих файлов будет темой.
- Считайте файл через одиночный файл и установите значения в виде строк
[x appearance] setWhatever:<plist value>]
для каждого элемента темы. - Если у вас есть экземплярыТот же элемент, который должен отображать разные элементы, получает эти изображения через синглтон.
Это более или менее совет от Амит Вьявахаре.Я сказал plist вместо xml, потому что их легче читать.Не дублируйте NIB, если вам действительно не нужно.