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

时间:2015-02-07 23:45:14

标签: ios objective-c colors uiappearance

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

enter image description here

有关如何以高效/简单的方式执行此操作的任何想法?

2 个答案:

答案 0 :(得分:1)

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

对于委派,您需要定义协议。对于此协议,您的HomeViewController将为delegate,您的SettingsViewController会将其称为。{/ p>

//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];
}

答案 1 :(得分:0)

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;

}