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