可定制的主题颜色来devise在iOS应用程序
我需要使应用程序devise,可以根据用户想要的主题定制。
我只应该在一个地方改变颜色,整个应用程序的主题应该改变。
注:不同的主题包含不同的主题颜色。
我所做的是做这样的调色板。
在这个图像中,如果我将ThemeColor
更改为Green
而不是Blue
那么在哪里使用过ThemeColor
,那么应该将它改为Green
。
但我无法find一种方法来定制这种颜色。 或者其他任何方式,我错过了达到我的要求?
任何帮助赞赏..
如果您使用目标iOS 7+开发项目并使用默认iOS UI对象,则可以通过更改UIView的tintColor属性并使用UIAppearance协议来pipe理主题。
是的 ,你也可以从storyboard / xib中更改tintColor。
最好的教程 : https : //www.raywenderlich.com/108766/uiappearance-tutorial
— 更新 —
对于所有iOS版本 : 如何为iPhone应用程序创build多个主题/皮肤?
我希望这能帮到您。 🙂
在代码中创build一个App主题颜色,如下所示:
#define APPTHEME_COLOR [UIColor colorWithRed:238.0/255.0 green:82.0/255.0 blue:87.0/255.0 alpha:1.0]
在所有需要的控件中使用此主题颜色。 一旦你改变这个RGB值,你的主题将会改变。
还有一件事要说,你不需要在Storyboard中设置颜色。 你必须在Code中设置它。
希望能帮助到你..
你应该使用NSUserDefault
来存储当前的主题。 在你的每一个ViewController
,从viewwillAppear
或viewDidAppear
NSuserdefault
设置背景颜色,因为每次你浏览的时候都会调用。 当更改主题更改userdefault
的颜色,以便您的每个viewcontroller
将获得该颜色。
更新如在评论中所述:
你可以像这样储存颜色,
NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults]; UIColor *currentThemeColor = [UIColor redColor]; //any color instead of red which user change from settingviewcontroller NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:currentThemeColor]; [myDefaults setObject:colorData forKey:@"themeColor"];
然后从每个视图控制器,
-(void)viewWillAppear:(BOOL)animated{ NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults]; NSData *colorData = [myDefaults objectForKey:@"themeColor"]; UIColor *themeBackGroundColor = [NSKeyedUnarchiver unarchiveObjectWithData:colorData]; self.view.backgroundColor = themeBackGroundColor; }
希望这会帮助:)
为此,请使用全局色调颜色。 🙂