Повторно использовать один и тот же 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];
Другие вопросы по тегам