Повторно использовать один и тот же UIColor в нескольких файлах
Мне нужно использовать один и тот же цвет в куче файлов, поэтому я решил сделать "глобальные переменные", чтобы сделать это. Я создал NSObject
класс называется ColrClass
и реализовал некоторые методы класса, как это:
+(UIColor *) returnRedColor {
UIColor *redColr = [UIColor colorWithRed:0 green:0.433 blue:0.804 alpha:1];
return redColr;
}
Итак, мой вопрос, есть ли другой способ сделать то же самое? Я хотел бы использовать наиболее рациональное решение, но не уверен, что эти методы класса будут лучшими. Я не прав, и это хорошее решение? Или есть лучшие решения?
2 ответа
Вы можете сделать категорию на UIColor
сделать это. Имя файла будет выглядеть примерно так UIColor+ColorClass
, Категория будет выглядеть так:
UIColor + ColorClass.h
#import <UIKit/UIKit.h>
@interface UIColor (ColorClass)
+ (UIColor *)returnRedColor;
@end
UIColor + ColorClass.m
#import "UIColor+ColorClass.h"
@implementation UIColor (ColorClass)
+ (UIColor *)returnRedColor
{
return [UIColor colorWithRed:0 green:0.433 blue:0.804 alpha:1];
}
@end
Тогда в вашем ProjectName-prefix.pch
ты можешь сделать #import "UIColor+ColorClass.h
чтобы этот метод был доступен на протяжении всего проекта. Вызов метода будет [UIColor returnRedColor];
Я предпочитаю использовать одноэлементный экземпляр вместо методов класса в такой ситуации. Я думаю, что это лучше, потому что вы можете переопределить методы, когда это необходимо.
/* ... */
static ColrClass* sharedInstance = nil;
// Get the shared instance and create it if necessary.
+(ColrClass*) sharedInstance {
if ( sharedInstance == nil ) {
sharedInstance = [ColrClass new];
}
return sharedInstance;
}
/* ... */
-(UIColor *) returnRedColor {
UIColor *redColr = [UIColor colorWithRed:0 green:0.433 blue:0.804 alpha:1];
return redColr;
}
и используйте так:
[[ColrClass sharedInstance] returnRedColor];