Как стандартизировать внешний вид моего приложения для iPhone

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

self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]

Это становится довольно избыточным и подверженным ошибкам, когда у вас есть около 50 UIViews для управления. И, конечно же, клиенты меняют желаемое фоновое изображение каждые 3 дня или около того. Итак, мой следующий вариант — создать вспомогательные файлы, например:

@implementation GuiDefaultsUIView
+ (void) setDefaultProperties:(UIView *) view {
    view.backgroundColor = [UIColor groupTableViewBackgroundColor];

А затем вручную вызовите [GuiDefaultsUIView setDefaultProperties:self.view]; из каждого контроллера представления. Это работает, и я делаю это сейчас, но это означает, что для каждого объекта пользовательского интерфейса (например, UIButton, UITableView) мне нужно будет вызывать аналогичную функцию для каждого экземпляра каждого класса.

Что я хотел бы сделать, так это стандартизировать это, чтобы я получил внешний вид по умолчанию, который я мог бы перезаписать, когда это необходимо. Я рассматривал подклассы UIView / UIButton / UITableView, но это не похоже на правильный способ сделать это. Добавление категорий было бы неплохо, но я не думаю, что переопределение методов по умолчанию (например, init) также было бы правильным путем.

Так. как бы вы стандартизировали свой внешний вид?


person dartarrow    schedule 10.10.2011    source источник
comment
Это тот же вопрос, что и Что такое рекомендуемый метод стилизации приложения iOS, поскольку вы ищете косвенное указание для установки стиля нескольких элементов из общей точки. Я не чувствую, что есть окончательный ответ по этому вопросу.   -  person Jano    schedule 10.10.2011
comment
@Jano Я бы не сказал, что ищу окончательный ответ. Больше похоже на лучшие практики. И все же спасибо за ссылку. Это немного помогает.   -  person dartarrow    schedule 10.10.2011


Ответы (4)


Это относительно просто ;) Вы просто создаете собственный подкласс UIViewController с именем MyVievControllerнапример, и наследуете ViewControllers от этого класса. Затем в init и viewWillAppear и т. д. MyViewController вы можете выполнить свою настройку, просто обязательно вызовите super в своих подклассах. Вы можете сделать то же самое для UITableViewControllers и даже для UIViews, чтобы настроить рисунок или установить стандартные свойства.

Мы постоянно делаем это в наших приложениях, и это прекрасно работает. Категории в некоторых случаях тоже хороши, например, вы можете переопределить метод drawRect для UINavigationBar.

person Ahti    schedule 10.10.2011

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

person Totumus Maximus    schedule 10.10.2011

Почему бы вам не создать суперкласс для всех ваших представлений? установите там все необходимые свойства, а затем сделайте так, чтобы каждое новое представление, которое вы создаете, наследовалось от этого суперкласса. Допустим, вы создаете UIView под названием «PreDesignedUIview», внутри которого находится ваш дизайн, например цвет фона и т. д.

то всякий раз, когда вы создаете новое представление, вы должны установить:

@interface NewView : PreDesignedUIview

это автоматически установит ваш дизайн из PreDesignedUIview в новый вид.

Что не так с этим ?

person shannoga    schedule 10.10.2011

Создайте класс Utility, в котором хранятся ваши фоновые цвета и изображения. Затем используйте эти методы для получения изображений/цветов. Когда вы должны измениться, не идите и не вызывайте разные методы для каждого файла, вместо этого измените цвет, который возвращался из метода в классе Utility.

person Ved    schedule 10.10.2011