3

我需要为给定的索引返回一个特定的 UIColor。
我试图基本上将 UIColors 存储为 NSArrays

TypeColors = [[NSDictionary alloc] initWithObjectsAndKeys:

@"1" , [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.5],[NSNumber numberWithFloat:0.5],[NSNumber numberWithFloat:0.5],[NSNumber numberWithFloat:1.0], nil],

@"5" , [NSArray arrayWithObjects:[NSNumber numberWithFloat:1.0],[NSNumber numberWithFloat:0.5],[NSNumber numberWithFloat:0.1],[NSNumber numberWithFloat:1.0], nil] , nil]; //nil 表示对象和键的结束。

在这里,我想从该字典中检索 UIColor :

a = 5;
NSArray* colorArray = [TypeColors objectForKey:a];
UIColor* color = [UIColor colorWithRed:[colorArray objectAtIndex:0]
green:[colorArray objectAtIndex:1] blue:[colorArray objectAtIndex:2] 
alpha:[colorArray objectAtIndex:3]];

它总是给我一个零,有人知道为什么吗?谢谢!

4

3 回答 3

1

将其更改为

UIColor* color = [UIColor colorWithRed:[[colorArray objectAtIndex:0] floatValue]
green:[[colorArray objectAtIndex:1] floatValue] blue:[[colorArray objectAtIndex:2] floatValue] 
alpha:[[colorArray objectAtIndex:3] floatValue]];

要发送的参数是 cgfloat 而不是 NSNumber

于 2012-10-01T17:20:15.033 回答
1

两件事情:

1)事物的顺序initWithObjectsAndKeys是对象,然后是它们的键。是的,直觉上是倒退。

2) 键不是整数5而是NSString @"5".

于 2012-10-01T17:24:29.110 回答
1

您需要先将 UIcolor 转换为 Nsstring,然后再将其保存在字典中,如下所示:

    -(NSString *)convertColorToString :(UIColor *)colorname
    {
    if(colorname==[UIColor whiteColor] )
    {
       colorname= [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
    }
    else if(colorname==[UIColor blackColor])
    {
       colorname= [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
    }
    else
    {
        colorname=colorname;
    }
    CGColorRef colorRef = colorname.CGColor;
    NSString *colorString;
    colorString=[CIColor colorWithCGColor:colorRef].stringRepresentation;
    return colorString;
}

当您想从字典中获取值时,您需要将字符串转换为颜色,如下所示

    -(UIColor *)convertStringToColor :(NSDictionary *)dicname :(NSString *)keyname
{
    CIColor *coreColor = [CIColor colorWithString:[dicname valueForKey:keyname]];
    UIColor *color = [UIColor colorWithRed:coreColor.red green:coreColor.green blue:coreColor.blue alpha:coreColor.alpha];
    //NSLog(@"color name :%@",color);
    return color;
}

前:

这里 dicSaveAllUIupdate 是我的字典,我在其中保存了视图背景颜色。

 [dicSaveAllUIupdate setObject:[self convertColorToString: self.view.backgroundColor] forKey:@"MAINVW_BGCOLOR"];

我将按如下方式进行检索

self.view.backgroundColor=[self convertStringToColor:retrievedDictionary:@"MAINVW_BGCOLOR"];

希望这对你有帮助...

于 2015-06-06T05:03:41.497 回答