2016-04-29 6 views
1

Ich muss Application Design machen, die nach Wunsch des Benutzers Theme angepasst werden kann.Anpassbare Designfarbe zum Design Anwendung in ios

Ich sollte die Farbe nur an einer Stelle ändern und das gesamte Anwendungsthema sollte geändert werden.

HINWEIS: Verschiedene Thema enthält verschiedene Themenfarben.

Was ich getan habe, ist Machen Sie eine Farbpalette wie folgt.

Set ThemeColors Named Colour Palette

In diesem Bild, wenn ich ThemeColor zu Green statt Blue dann ändern, wo immer ich die ThemeColor verwendet habe, dann sollte es Green stattdessen erfolgen.

Aber ich kann nicht einen Weg finden, diese Farben anzupassen. Oder auf andere Weise, ich verpasse es, meine Anforderung zu erfüllen?

Jede Hilfe willkommen ..

+1

Ich denke, ein einfacher Weg, dies zu tun, ist Ihre Farbpaletten als Klassenmethoden in einer UIColor Kategorie zu erstellen. Auf diese Weise können Sie überall darauf verweisen. Aber ändere es an einer Stelle und erwarte die Reflexion. –

Antwort

1

Wenn Sie Ihr Projekt mit Ziel iOS entwickeln 7+ und unter Verwendung von Objekten Standard iOS UI können Sie Thematisierung verwalten von tintColor Eigentum von UIView ändern und UIAppearance Protokoll.

Und Ja, können Sie tintColor von Storyboard/xib ändern.

Beste Anleitung für dieses: https://www.raywenderlich.com/108766/uiappearance-tutorial

--- UPDATE ---

Für alle iOS-Version: How to create Multiple Themes/Skins for iphone apps?

Ich hoffe, dies wird Ihnen helfen. :)

1

sollten Sie NSUserDefault verwenden aktuelles Thema zu speichern. In Ihrem jeder ViewController Hintergrundfarbe von NSuserdefault von viewwillAppear oder viewDidAppear setzen, denn es wird jedes Mal aufgerufen, wenn Sie auch zurück navigieren. Wenn Sie das Thema ändern, ändern Sie die Farbe in userdefault, so dass Ihre alle viewcontroller diese Farbe bekommen.

-Update wie in Kommentar gefragt:

Sie Farbe wie diese speichern kann,

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"]; 

und dann von jedem View-Controller,

-(void)viewWillAppear:(BOOL)animated{ 

NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults]; 

NSData *colorData = [myDefaults objectForKey:@"themeColor"]; 

UIColor *themeBackGroundColor = [NSKeyedUnarchiver unarchiveObjectWithData:colorData]; 

self.view.backgroundColor = themeBackGroundColor; 

} 

hoffen, dass dies helfen :)

+0

Schöne Lösung Aber mit dieser Methode muss ich alle Ansichten initialisieren, um nur ihre Farben zu ändern. (Ereignis, wenn ich keine anderen Verwendungen wie nur Linien usw. möchte) Gibt es noch andere Lösungen? – Simmy

+0

Nein, Sie müssen nicht jedes VC initialisieren, wenn Sie ein VC öffnen, wird es farbig gesetzt. bedeutet, wenn es erforderlich ist, um VC zu öffnen, wird es Hintergrundfarbe von 'defaults' setzen – Lion

+0

Sie müssen nicht jedes VC neu laden, wenn Thema ändern. – Lion

1

Erstellen Sie eine App-Designfarbe in Ihrem Code wie folgt:

#define APPTHEME_COLOR [UIColor colorWithRed:238.0/255.0 green:82.0/255.0 blue:87.0/255.0 alpha:1.0] 

Verwenden Sie dieses Thema Farbe in allen Steuerelementen, wo immer Sie benötigen. Sobald Sie diesen RGB-Wert ändern, wird Ihr Design geändert.

Noch etwas zu sagen, Sie müssen keine Farben im Storyboard einstellen. Sie müssen es überall in Code einstellen.

Hoffe, es hilft ..

+0

ist da sowieso ich kann Farbe im Storyboard setzen und muss es nicht im Code einstellen. Dann kann ich es auch anpassen? (möglicherweise mit Farbmustern oder Paletten oder etwas ähnliches ..) – Simmy

0

zu diesem Zweck die globale Tönungsfarbe verwenden. :)