Um das Beispielprojekt auszuführen, klonen Sie das Repo und führen Sie zuerst pod install aus dem Beispielverzeichnis aus.
Giotto ist über Cocoapods erhältlich. Um es zu installieren, fügen Sie einfach die folgende Zeile zu Ihrem Podfile hinzu:
pod "Giotto" Giotto ist unter der Apache -Lizenz verfügbar. Weitere Informationen finden Sie in der Lizenzdatei.
SDTHEMEMEMAGER (von nun an TM) wird hauptsächlich mit der Absicht geboren, die Entwicklung von Anwendungen zu vereinfachen und zu standardisieren, für die das Umbenennen der GUI erforderlich ist.
Die Plist, die ein Thema beschreibt, muss ein Konstants -Wörterbuch mit allen Konstanten enthalten, während Stile wie in anderen Wörterbüchern gewünscht angeordnet werden können.
Es enthält alle Konstanten wie Schriftarten, Farben oder Größen. Technisch gesehen handelt es sich um ein organisiertes einstufiges Wörterbuch wie folgt: <costant_name> : <costant_value> Nach Konvention haben die Tasten die folgenden Präfixe:
- Schriftart Namen: Die Schlüssel beginnt mit
FONT_- Farbcodes: Die Schlüssel beginnt mit
COLOR_- Dimensionen (Ganzzahl o Float): Die Taste beginnt mit
DIMENSION_
Esempi:
{
“FONT_REGULAR” : “Helvetica-Neue”,
“COLOR_COMMON_BACKGROUND” : “color:000000FF”,
“DIMENSION_VIEW_WIDTH” : 3 // value is a NSNumber
}
Konvention color: wird in den Abschnittskonventionen erläutert. Konstanten können kein Array oder Wörterbuch als Wert enthalten.
Auf der gleichen Ebene wie Konstanten können andere Wörterbücher als Funktionsgruppen von Grafikstilen definiert werden. Gruppennamen sind kostenlos. Technisch gesehen sind es organisierte Wörterbücher wie folgt: <style_name> : <style_dictionary> Das Style Dictionary ist wie folgt organisiert: <property_name> : <value_to_apply> Beispiele:
{
“CommonLabel” :
{
“_superstyle”: <style name of parent>,
“textColor” : “COLOR_COMMON_LABEL”,
“font”: “font:FONT_REGULAR,18”
},
“HomeViewController” :
{
“titleLabel” : “style:CommonLabel”,
“textField” :
{
“textColor” : “color:FFFFFF”,
“width” : “DIMENSION_FIELD_WIDTH”,
“layer.borderWidth” : 2
}
}
}
Konventionen _superstyle" , style: und font: werden in Abschnitt Kongressen erklärt
Um die Erstellung der Themen zu beschleunigen und den Umgang mit bestimmten, aber häufigen Fällen zu ermöglichen, wurden die folgenden Konventionen definiert:
_superstyle: Kann in das Wörterbuch eines Stils eingegeben werden, um anzuzeigen, dass der Stil von einem anderen Stil ererbt. Wenn der "Eltern" -Stil vor dem "Kind" -Stil angewendet wird, können Sie die Tastaturen im "Kind" überschreiben. Sie können von mehreren Stilen erben, indem Sie sie nacheinander durch ein "," trennen. Die angegebenen Stile werden in der Reihenfolge angewendet, sodass der Stil nach dem Überschreiben des Werts der Tastaturen, die er mit einem Stil gemeinsam hat, der ihm in der Liste gemeinsam geht.
style:style_name1,style_name2: Die im Schlüssel angegebene Eigenschaft ist mit den in der Liste aufgeführten Stilen stilisiert. Die gezeigten Stile müssen in einer der Stilgruppen vorhanden sein. Abkürzte Versions: style_name1,style_name2. Wie_superstylewerden die angezeigten Stile in der Reihenfolge angewendet.font:font_name, font_size: nstantiates a uifont und legt es als Wert der im Schlüssel angegebenen Eigenschaft fest. Diese Konvention kann auch in Konstanten verwendet werden. Kurzversionf: font_name, font_size.Der
font_namekann herkömmliche Werte annehmen, um die Systemschrift zu laden:
system`systemBold``systemItalic`
color:color_string: Renders Color_String , um ein UIColor zu instanziieren, um die im Schlüssel angegebene Eigenschaft zu validieren. Diese Konvention kann auch in Konstanten verwendet werden. Kurzversionc: color_string.nullodernil: Stellen Sie die im Schlüssel angegebene Eigenschaft alsnilfest.point:x,y: Stellen Sie die Eigenschaft als CGPoint mit X- und Y -Werten ein. Die X- und Y -Werte werden als Float interpretiert.size:width,height: Stellen Sie die Eigenschaft als CGSIZE mit den angegebenen Breiten- und Höhenwerten ein. Werte werden als float interpretiert.rect:x,y,width,height: Stellen Sie die Eigenschaft als CGRECT mit den Werten x, y, breit und Höhe ein. Werte werden als float interpretiert.edge:top,left,bottom,right: Stellen Sie die Eigenschaft als Uiedgeinsets mit oberen, links, unten und rechten Werten ein. Werte werden als float interpretiert.
Wie bereits erwähnt, sieht ein Stil wie ein Wörterbuch in einer der Stylesgruppen aus und kann auf jedes NSObject (typischerweise ein Schnittstellenelement) angewendet werden. Die Wörterbuchschlüssel können sein:
- Einer der Konventionen, die die Schlüssel angegeben haben (siehe dedizierter Absatz)
- eine Eigenschaft des zu stilisierten Objekts
- Der Tastatur einer Eigenschaft des zu stilisierten Objekts (Ex. "Layer.BorderColor")
- Eine Zeichenfolge, die keine Immobilie angibt, sondern in der entsprechenden Methode behandelt wird, die jedes Objekt aus der Kategorie NSObject+TEMANAMERAGE erbt (siehe Abschnitt Special Property Management ).
- Eine Liste von Eigenschaften oder Tastaturen, die durch "," (es. TextColor, Layer.BorderColor) getrennt sind.
Die angegebene Eigenschaft kann auch ein NSArray sein (z. B. eine IboutletCollection). In diesem Fall wird der Wert auf alle Objekte im Array angewendet.
Verwenden Sie einfach die folgende Codezeile, um einen in zeitlich festgelegten Stil auf ein Objekt anzuwenden:
[[SDThemeManager sharedManager] applyStyleWithName:@"NomeStile" toObject:object];
Das angegebene Objekt kann auch selbst sein.
Die Bibliothek enthält eine Kategorie NSObject+themenanager, die die Methode enthüllt:
- (void) applyThemeValue:(id)value forKeyPath:(NSString*)keyPath;
Diese Methode wird durch die Kategorien einiger Unterklassen überschrieben, um einige Eigenschaften auf besondere Weise zu bearbeiten. Diese Kategorien sind immer in der Sysdata -Bibliothek enthalten. Z.B. Uitextfield+TheSemanager verwaltet das gefälschte Immobilien -Platzholz , um den zugeschriebenen PlaceHolder zu verwenden.
Die Kategorie NSObject+TheSemanager deklariert das Protokoll:
@protocol ThemeManagerCustomizationProtocol <NSObject>
@optional
- (BOOL) shouldApplyThemeCustomizationForKeyPath:(NSString*)keyPath;
- (void) applyCustomizationOfThemeValue:(id)value forKeyPath:(NSString*)keyPath;
@end
Die Methoden dieses Protokolls ermöglichen die benutzerdefinierte Eigenschaftsverwaltung außerhalb der Bibliothek selbst. Dies sind die einzigen Methoden, die aus der Bibliothek verwendet werden müssen, um das Risiko der zuvor beschriebenen Methode zu vermeiden.
Die Methode shouldApplyThemeCustomizationForKeyPath: die Ferienhandung von Tastzen, die Sie beabsichtigen, manuell zu handhaben, nur für die YES zurückzugeben.
Die Methode applyCustomizationOfThemeValue:forKeyPath: Muss die benutzerdefinierte Implementierung für die von der vorherigen Methode akzeptierten Tastaturen enthalten.
Der themenversorgungsbedarf benötigt notwendigerweise ein Standardthema und optional kann ein oder mehrere alternative Stile durch die Methode angezeigt werden:
- (void) setAlternativeThemes:(NSArray*)alternativeThemes
Das frühere Array muss die Namen von Plist -Dateien alternativer Themen enthalten. Wenn Sie versuchen, einen Stil anzuwenden, sucht TheManager im ersten alternativen Thema danach. Wenn Sie es in der zweiten und so weiter finden. Wenn keiner der alternativen Themen den angegebenen Stil enthält, sucht der TheSemanager im Standardthema danach.
Bestellung ist wichtig !!!
Version 2 des TheSemanager ist rückwärts kompatibel. Um die retrokompatibilität mit alten Zeichnenformaten zu verarbeiten, müssen neue das Schlüsselwertepaar notwendigerweise enthalten: “formatVersion” : 2
Die folgenden Methoden können das Thema und die konstanten Werte auf programmatische Weise ändern.
Ändern Sie den Wert einer Konstanten auf programmatische Weise.
- (void) modifyConstant:(NSString*)constant withValue:(id)value
Ändern Sie den Wert für einen Stil auf einem bestimmten Pfad auf programmatische Weise.
- (void) modifyStlye:(NSString*)style forKeyPath:(NSString*)keyPath withValue:(id)value
AUFMERKSAMKEIT :
Standardmäßig ersetzen Sie eine Stileinstellung einige Tastaturen ersetzen den gesamten Stil im Bundle nur durch die neuen Tastaturen. Wenn Sie alle anderen Tastaturwerte, die in den Basisthemen festgelegt sind
- (void) modifyStyle:(NSString*)style inheritanceEnable:(BOOL)inheritanceEnable
Alle Änderungen, die programmgesteuert festgelegt sind, um sie auch beim nächsten App -Neustart zurückzuziehen. Andernfalls sind alle Änderungen für die aktuelle Sitzung verfügbar.
- (void) synchronizeModifies
So setzen Sie alle Modifikationen programmgesteuert zurück (mit ModifyConstant: WithValue: oder ModifyStlye: Forkeypath: WithValue :)
- (void) resetModifies