iPhone UIColor в файле Plist - PullRequest
       2

iPhone UIColor в файле Plist

2 голосов
/ 02 августа 2011

Можно ли как-то сохранить цветовые коды в файле Plist?

Должен ли я представлять их в виде строки? и тогда я могу создать цвета из них?

Я видел подобную ветку здесь об этом, но она пока не имеет ответа

Что можно сделать?

Ответы [ 4 ]

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

Я могу дать вам предложение. Вместо сохранения названий цветов вы можете сохранить значения RGB в массиве и сохранить этот массив в каждой строке в списке.

ключ - красный Тип - Массив значение - 1,0,0,0,0,0

Получить массив для каждого ключа.

NSArray *colorsArray = [dictionaryFromPlist objectForKey:@"Red"];
UIColor *mycolor = [UIColor colorWithRed:[[colorsArray objectAtIndex:0] floatValue]
                                   green:[[colorsArray objectAtIndex:1] floatValue]
                                    blue:[[colorsArray objectAtIndex:2] floatValue]
                                   alpha:1.0];

Только мои мысли ..

3 голосов
/ 02 августа 2011

UIColor ( см. Здесь ) соответствует протоколу NSCoding ( см. Здесь ), что означает, что вы можете записать их в список, если вы сделаете это с помощью NSCoding .

Здесь есть отличное руководство о сохранении и восстановлении данных вашего приложения с помощью NSCoding

2 голосов
/ 16 августа 2013

Вы можете использовать NSKeyedArchiver , который наследуется от NSCoder

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:[UIColor purpleColor]];
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"color": data}];

Чтобы вернуть цвет обратно, вы должны использовать NSKeyedUnarchiver :

NSDictionary *dict = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
NSLog(@"%@", [NSKeyedUnarchiver unarchiveObjectWithData: dict[@"color"]]);
1 голос
/ 27 августа 2013

Чтобы сохранить удобочитаемость для человека, я сделал для этого категорию:

@implementation UIColor (EPPZRepresenter)


NSString *NSStringFromUIColor(UIColor *color)
{
    const CGFloat *components = CGColorGetComponents(color.CGColor);
    return [NSString stringWithFormat:@"[%f, %f, %f, %f]",
            components[0],
            components[1],
            components[2],
            components[3]];
}

UIColor *UIColorFromNSString(NSString *string)
{
    NSString *componentsString = [[string stringByReplacingOccurrencesOfString:@"[" withString:@""] stringByReplacingOccurrencesOfString:@"]" withString:@""];
    NSArray *components = [componentsString componentsSeparatedByString:@", "];
    return [UIColor colorWithRed:[(NSString*)components[0] floatValue]
                           green:[(NSString*)components[1] floatValue]
                            blue:[(NSString*)components[2] floatValue]
                           alpha:[(NSString*)components[3] floatValue]];
}


@end

То же форматирование, которое используется NSStringFromCGAffineTransform.На самом деле это часть более масштабного представления объекта plist в [eppz! Kit на GitHub] [1].

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