更改所有应用配色方案

Posted

技术标签:

【中文标题】更改所有应用配色方案【英文标题】:Change all the app color scheme 【发布时间】:2015-02-07 23:45:14 【问题描述】:

所以,我有一个 HomeViewController(图 1),有两个按钮,一个是白色的,一个是蓝色的。在右下角,您可以看到一个以模态方式呈现 SettingsViewController 的按钮(图 2),在此视图控制器上,有 4 个按钮,因此用户可以选择他们喜欢的配色方案。想象一下,当用户按下第一个(红色)时,当关闭视图控制器时,HomeViewController 的配色方案应该如图 3 所示。

关于如何以高效/简单的方式做到这一点的任何想法?

【问题讨论】:

您可以将所选颜色存储在UIColor 变量中,并将按钮的颜色设置为该变量。 【参考方案1】:

有两种很好的方法可以做到这一点:1)委派,2)viewWillAppear:

对于委派,您需要定义一个协议。您的HomeViewController 将成为此协议的delegate,您的SettingsViewController 将调用它。

//SettingsViewController.h

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

@interface SettingsViewController : UIViewController

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

@end

设置视图控制器时,请确保将self.delegate 设置为等于对HomeViewController 的引用。 这是必须的。

然后,当您的用户更改颜色时,调用:

[self.delegate colorChanged:whateverColor];

您的委托显然必须遵守此方法,并适当更改颜色:

-(void)colorChanged:(UIColor *)color 

    [myButton setBackgroundColor:color];

对于viewWillAppear:,只需将颜色保存在某处并为此在视图控制器的方法中设置按钮的颜色。当您的设置视图即将消失并显示主视图控制器时,viewWillAppear: 将被调用:

-(void)viewWillAppear:(BOOL)animated 

    [super viewWillAppear:animated];

    [myButton setBackgroundColor:mySavedColor];

【讨论】:

我使用协议完成了它,尽管我必须阅读更多关于委托和协议的内容,因为即使它有效,我也不知道到底发生了什么。起初我尝试使用 viewWillAppear 方法,但是如何从 SettingsViewController 设置 mySavedColor(in HomeViewController) 变量? @iDeC 是的,一定要详细了解它并了解它的工作原理。您必须将mySavedColor 保存在某处(请参阅this question),然后在viewWillAppear: 中检索它。【参考方案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;


【讨论】:

以上是关于更改所有应用配色方案的主要内容,如果未能解决你的问题,请参考以下文章

使用 pyinstaller 或 fbs 冻结应用程序会更改 pyside2 应用程序的默认配色方案

Plotly:如何更改 3D 曲面图的配色方案?

更改 Gentelella 配色方案

更改 Bootstrap 的配色方案

如何根据设备主题更改collectionview单元格颜色(按照我的配色方案)

获取其他元素的 Angular Material 主题配色方案/调色板