0

实现非常简单。我正在更新 UIView 的背景颜色。

对于颜色的选择,我使用的是外部组件。

但是,在选择颜色时,它不会立即更新。相反,当我再次运行项目时,背景颜色会发生变化。

对这个问题有任何见解吗?谢谢!

更新:

下面的方法是从我的班级的 viewWillAppear 方法中调用的

-(IBAction)changeColor:(id)sender
{      
    NSArray *arrColor = [[NSArray alloc]initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"color"]]; 
    [self.viewWithSilhouetteImage performSelectorOnMainThread:@selector(setBackgroundColor:) withObject:[UIColor colorWithHue:[[arrColor objectAtIndex:0] floatValue] saturation:[[arrColor objectAtIndex:1] floatValue] brightness:[[arrColor objectAtIndex:2] floatValue] alpha:1.0] waitUntilDone:NO];
    [btnSelectPhoto setTitleColor:[UIColor colorWithHue:[[arrColor objectAtIndex:0] floatValue] saturation:[[arrColor objectAtIndex:1] floatValue] brightness:[[arrColor objectAtIndex:2] floatValue] alpha:1.0] forState:UIControlStateNormal];
}

我尝试调试甚至登录。每次更新颜色时都会调用该方法,但直到下次运行时才会反映。

我使用的组件是 ESCColorpicker: https ://github.com/JARinteractive/ESCObservable/tree/master/example/ESCColorPicker

4

1 回答 1

0

出于性能原因 NSUserDefaults 不会自动刷新,而是偶尔刷新一次。

之后:

[[NSUserDefaults standardUserDefaults] setObject:aColor forKey:@"color"];

你应该打电话

[[NSUserDefaults standardUserDefaults] synchronize];
于 2014-04-29T08:44:30.493 回答