Как разделить константы между Интерфейсным Разработчиком и кодом? - PullRequest
5 голосов
/ 28 октября 2009

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

В настоящее время я устанавливаю цвет в коде и использую #define для настройки цвета, но, очевидно, IB не может использовать #define ...

Ответы [ 2 ]

0 голосов
/ 03 сентября 2011

Я обошел эту проблему, создав подклассы различных элементов управления, чтобы обеспечить одинаковый стиль во всем приложении. Недостатком является то, что вы не можете видеть стиль в конструкторе интерфейса только каркас.

Например, у меня есть

@interface MyButton : UIButton 
@end


@implementation MyButton

 -(void) initialize{
self.backgroundColor = [UIColor MyButonColor]; // Using a category on UIColor
}

- (id)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self)  {
        [self initialize];
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)decoder {
    if (self = [super initWithCoder:decoder]) {
        [self initialize];
    }
    return self;
}
0 голосов
/ 30 октября 2009

Я думаю, что самый простой способ сделать это - создать категорию для класса UIColor и создать для него метод класса. Например:

Поместите это в файл заголовка (например, UIColor + CustomColors.h):

@interface UIColor ( CustomColors )
+ (UIColor *)myCustomColor;
@end

Поместите это в файл реализации (например, UIColor + CustomColors.m)

@implementation UIColor ( CustomColors )
+ (UIColor *)myCustomColor
{
   return [UIColor colorWithRed:0.2 green:0.5 blue:0.2 alpha:1.0];
}
@end

Тогда у вас есть доступ к методу класса в любом месте вашего кода, например:

...
self.view.backgroundColor = [UIColor myCustomColor];
...

См. Документация Apple по категориям для получения дополнительной информации.

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

Эти цвета теперь доступны не только в каждом создаваемом вами документе Interface Builder, но и в любом приложении, использующем системную цветовую палитру.

цветовая палитра http://img.skitch.com/20091030-dhh3tnfw5d8hkynyr7e5q3amwg.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...