Ios 更改所有应用程序颜色方案

Ios 更改所有应用程序颜色方案,ios,objective-c,colors,uiappearance,Ios,Objective C,Colors,Uiappearance,所以,我有一个HomeViewController(图1),它有两个按钮,一个白色,一个蓝色。在右下角,您可以看到一个按钮,该按钮显示一个设置视图控制器(图2),在该视图控制器上有4个按钮,用户可以选择他们喜欢的颜色方案。设想用户按下第一个按钮(红色),然后在关闭视图控制器时,HomeViewController的配色方案应如图3所示 关于如何高效/简单地执行此操作,您有什么想法吗?有两种好方法可以执行此操作:1)委派,2)视图将出现: In HomeViewController On Set

所以,我有一个HomeViewController(图1),它有两个按钮,一个白色,一个蓝色。在右下角,您可以看到一个按钮,该按钮显示一个设置视图控制器(图2),在该视图控制器上有4个按钮,用户可以选择他们喜欢的颜色方案。设想用户按下第一个按钮(红色),然后在关闭视图控制器时,HomeViewController的配色方案应如图3所示


关于如何高效/简单地执行此操作,您有什么想法吗?

有两种好方法可以执行此操作:1)委派,2)
视图将出现:

In HomeViewController
On SettigButton Click
 {
   Pass the HomeViewController delegate object SettingsViewController 
   Present your color Picker SettingsViewController 

 }

In SettingsViewController
 Define protocol name SettingsViewControllerDelegate 
   {
    -(void)selectedColor:(UIColor*)color;
   }

  return the selected color On dismissViewController
  if(delegate)
    {
     [delegate selectedColor:color];
    }


Again In HomeViewController
 -(void)selectedColor:(UIColor*)color
{
  view.backgroundColor=color;

}
对于委派,您需要定义一个协议。您的
HomeViewController
将是此协议的
代理,您的
设置视图控制器将调用它

//SettingsViewController.h

@protocol SettingsDelegate <NSObject>
@required
-(void)colorChanged:(UIColor *)color;
@end

@interface SettingsViewController : UIViewController

@property (nonatomic, weak) id<SettingsDelegate> delegate;

@end
您的学员显然必须遵守此方法,并适当更改颜色:

-(void)colorChanged:(UIColor *)color {

    [myButton setBackgroundColor:color];
}
对于
视图将显示:
,只需将颜色保存在某个位置,然后在视图控制器的方法中设置按钮的颜色即可<代码>视图将出现:
将在设置视图即将消失时调用,并显示主视图控制器:

-(void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    [myButton setBackgroundColor:mySavedColor];
}

您可以将所选颜色存储在
UIColor
变量中,并将按钮的颜色设置为该变量。我使用协议进行了设置,不过我还需要阅读更多关于代理和协议的内容,因为即使它起作用,我也不知道到底发生了什么。起初,我尝试使用viewWillExample方法,但如何从SettingsViewController设置mySavedColor(在HomeViewController中)变量?@iDeC是的,一定要阅读更多关于它的内容并了解它的工作原理。您必须将
mySavedColor
保存到某个地方(请参阅),然后在
视图中检索它将显示:
-(void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    [myButton setBackgroundColor:mySavedColor];
}