Как сделать приложение для iPhone «скиннируемым»? - PullRequest
6 голосов
/ 23 августа 2011

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

Если у кого-то есть подсказка по этому поводу, любой совет будет оценен.

Спасибо.

Ответы [ 6 ]

3 голосов
/ 23 августа 2011

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

1 голос
/ 26 ноября 2014

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

Так, например, одно из моих приложений, над которым я работаю, под названием Jam-mout (музыкальный проигрыватель) имеет несколько высококачественных тем. (Изображение прилагается). Каждая тема имеет свою раскадровку.

0 голосов
/ 18 июля 2013

Я понимаю, что это старый пост, но я решил поделиться своей копейкой по этому вопросу:)

Чтобы сделать любое приложение Cocoa скинируемым, вам нужно продумать 3 аспекта приложения:

1) Единообразие: под этим я подразумеваю, что во всех окнах, представлениях (включая кнопки, ввод текста и т. Д.) Вы хотите иметь «стандарт», который будет применяться во всем приложении. Это первое, что вам нужно посмотреть. Хотя и в iOS, и в OS X уже есть «темы», то есть Apple применяет способ затенения и разметки по умолчанию, вы можете переопределить их (см. Документацию по отдельному виду / окну и т. Д.).

2) Производительность: со скинами и т. Д. Производительность всегда является проблемой при написании собственных методов drawRect и т. Д. Код, который имеет Apple для «по умолчанию», уже оптимизирован, поэтому вам нужно внимательно следить за производительностью приложения, пока вы это делаете. Хорошие примеры: я использую изображение с градиентом, или я использую NSGradient? Оба из них имеют проблемы с производительностью, когда дело доходит до их рендеринга, но это вопрос, который является лучшим из двух

3) userDefaults: Как правило, это та область, из которой вы получаете свои настройки скина. userDefaults - это, в основном, место, где вы храните всю информацию, которую вы обычно устанавливаете в панели настроек.

На вашем месте я бы посмотрел ссылку на класс:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/

Кроме того, вот отличный пример использования userDefaults:

http://mobile.tutsplus.com/tutorials/iphone/nsuserdefaults_iphone-sdk/

Надеюсь, это поможет!

0 голосов
/ 24 августа 2011

Здесь уже есть хороший ответ, но я бы добавил, что если вы используете инструментарий пользовательского интерфейса, такой как Three20 Вы можете оформить все с помощью CSS, как для веб-страниц.

0 голосов
/ 24 августа 2011

мой пост должен помочь вам начать:

Каков рекомендуемый метод стилевого оформления приложения для iOS?

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

или вы можете создать идентификаторы для тем, которые сопоставлены (NSCFDictionary) с центральнойФабрика тем.примером идентификатора для конкретного представления для использования с фабрикой тем может быть строка MONImageSelectorTableCellThemeIdentifier.

пример менеджера / фабрики, который обрабатывает загрузку всех тем и передает ссылки на темы:

@interface MONThemeManager : NSObject

//...

- (MONTheme *)themeForCurrentlySelectedSkinForViewWithIdentifier:(NSString *)identifier;

//...

@end

Кроме того, трудно ответить на ваш вопрос более подробно, не зная ваших требований.реализация скининга приложения может варьироваться от очень простого до очень очень сложного.удачи.

0 голосов
/ 23 августа 2011

Для приложений iPhone, где большая часть дизайна графического интерфейса обеспечивается операционной системой, вы можете сделать это, установив пользовательские фоновые изображения панели навигации, пользовательские графические кнопки, а также различные шрифты / размеры / веса и пробелы. Убедитесь, что вы работаете с дизайнером, который знаком с графическим интерфейсом iPhone (если вы не работаете в тесном контакте с дизайнером, это станет кошмаром).

Недавно я собрал приложение для клиента, которому нужен сильно настроенный графический интерфейс: http://itunes.apple.com/us/app/gogoparis/id428497937?mt=8. Приложение с поддержкой скинов может иметь несколько таких наборов, поэтому пользователь может выбирать между несколькими различными общими стилями. (Надеюсь, у вашего клиента огромный дизайнерский бюджет!)

...