Могу ли я написать универсальную функцию для изменения элементов пользовательского интерфейса во всех моих контроллерах представления? - PullRequest
1 голос
/ 19 августа 2011

Я хотел бы знать, есть ли способ написать обобщенную функцию, которая может быть сохранена в чем-то вроде класса Utility, который будет изменять элементы пользовательского интерфейса?

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

headerLabel.textColor = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];

//Where red, green and blue are variables that are derived from another function 
//that converts Hex to RGB and 'headerLabel' is a UILabel with a connected IBOutlet

Эта же процедура происходит в каждом контроллере вида, поэтому мне было интересно, есть ли способ сделать это универсальной функцией?

В Java / Android SDK я могу передать контекст класса и сделать все остальное оттуда.

Заранее спасибо !!

EDIT:

Чтобы перефразировать вопрос, я хотел бы иметь функцию headerLabel.textColor= и другие методы, такие как headerLabel.text = @"foo" в этом родовом классе, не обязательно просто функцию цвета.

Ответы [ 2 ]

4 голосов
/ 19 августа 2011

Если вы хотите, чтобы HEX-> UICOLOR во всех ваших файлах, поместите это:

#define UIColorFromHEX(hexValue) [UIColor colorWithRed:((float)((hexValue & 0xFF0000) >> 16))/255.0 green:((float)((hexValue & 0xFF00) >> 8))/255.0 blue:((float)(hexValue & 0xFF))/255.0 alpha:1.0]

в ваш Prefix.pch файл.Затем в каждом файле вы можете изменить цвета с помощью

something.color = UIColorFromHEX(0xCCCCCC);

Вы можете определить все с помощью макроса #define.Если вы хотите определить headerLabel.textColor, используйте

#define setHeaderLabelColor headerLabel.textColor = [UIColor ...]
1 голос
/ 19 августа 2011

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

создайте класс наподобие gconstants, затем сохраните всю свою строку здесь в файлах h / m

 extern NSString *const APP_TITLE;

 @interface UIColor (APP)
+(UIColor *) APP_NAV_COLOR;
 @end

в .m файле

 NSString *const APP_TITLE = @"APP Name";

@implementation UIColor (APP)

+(UIColor *) APP_NAV_COLOR { return [UIColor colorWithRed:00/256.0 green:111/256.0    
 blue:59/256.0 alpha:1.0]; }

@ конец

и в любом контроллере объявить заголовочный файл

 self.navigationController.navigationBar.tintColor = [UIColor APP_NAV_COLOR];

headerLabel.textColor = [UIColor APP_NAV_COLOR];

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