Как создать приложение на основе темы? - PullRequest
7 голосов
/ 11 января 2012

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

В зависимости от выбора пользователя в приложении iphone, мне нужно изменить внешний вид приложения (фоновый рисунок цветного шрифта и т. Д.).Есть ли какой-нибудь стандартный способ добиться этого?

Одним из возможных решений может быть дублирование файлов xib для каждой темы и загрузка их в зависимости от выбора.Это хороший подход?главным образом потому, что подключение выходов и действий для копий в формате xib звучит как избыточная задача.

Я хотел бы получить экспертное предложение по этому сомнению.Спасибо за любую помощь заранее.

-mia

Ответы [ 3 ]

0 голосов
/ 11 января 2012

Лучший способ реализовать приложение IOS, основанное на темах (без использования ~ xib route).Вы должны создать файл build.xml, который будет содержать все части тем.Вы должны сохранить свой макет, и вы можете изменить изображения, стиль, шрифты, язык, представления, в этом макете в соответствии с предпочтениями пользователя.Делая это, вы не дублируете какой-либо код, и вы добьетесь наилучших результатов от своего приложения.

0 голосов
/ 24 февраля 2013

Как сказал 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, если вам действительно не нужно.

0 голосов
/ 11 января 2012

Для маршрута без XIB

Цвет: iOS 5 предоставляет новые API внешнего вида. Большинство элементов пользовательского интерфейса имеют опцию, если установить tintColor или backgroundColor. Редко даже фоновое изображение.

Шрифт: всегда можно было изменить, но вы не можете его оживить.

Фоновое изображение: ваш основной UIView должен иметь опцию для фонового изображения или, если это не удается, цвет фона с изображением шаблона.

...