プロジェクトのサンプルを実行するには、リポジトリをクローンし、最初にディレクトリの例からpod installを実行します。
GiottoはCocoapodsから入手できます。インストールするには、次の行をPodfileに追加するだけです。
pod "Giotto" GiottoはApacheライセンスの下で入手できます。詳細については、ライセンスファイルを参照してください。
Sdthememanager(以降、TMと呼ばれる)は、主にGUIのブランド変更を必要とするアプリケーションの開発を簡素化および標準化することを目的として生まれました。
テーマを説明するプリストには、すべての定数を持つ定数辞書を含める必要がありますが、スタイルは他の辞書で必要に応じて配置できます。
フォント名、色、サイズなどのすべての定数が含まれています。技術的には、次のように1つのレベル編成辞書です。 <costant_name> : <costant_value>慣習により、キーには次のプレフィックスがあります。
- フォント名:キーは
FONT_で始まります- カラーコード:キーは
COLOR_で始まります- 寸法(整数oフロート):キーは
DIMENSION_から始まります_
esempi:
{
“FONT_REGULAR” : “Helvetica-Neue”,
“COLOR_COMMON_BACKGROUND” : “color:000000FF”,
“DIMENSION_VIEW_WIDTH” : 3 // value is a NSNumber
}
コンベンションcolor:セクションで説明されていますコンベンション定数は、値として配列または辞書を含めることができません。
定数と同じレベルで、他の辞書はグラフィックスタイルの関数グループとして定義できます。グループ名は無料です。技術的には、次のように編集された辞書です。 <style_name> : <style_dictionary>スタイル辞書<property_name> : <value_to_apply>次のように編成されています。
{
“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
}
}
}
コンベンション_superstyle" 、 style: and font: section条件で説明されています
テーマの起草をスピードアップし、特定の頻繁なケースの処理を可能にするために、次の規則が定義されています。
_superstyle:スタイルの辞書に入力して、スタイルが別のスタイルから継承されていることを示すことができます。 「親」スタイルが「子」スタイルの前に適用される場合、「子」のキーパスを上書きすることができます。それらを「、」で順次分割することにより、複数のスタイルから継承できます。指定されているスタイルは順番に適用されるため、リスト内の前にあるスタイルと共通するキーパスの値を上書きした後に示されたスタイルが表示されます。
style:style_name1,style_name2:キーに示されているプロパティは、リストにリストされているスタイルで様式化されています。表示されているスタイルは、スタイルグループの1つに存在する必要があります。略語バージョンs: style_name1,style_name2。_superstyleと同様に、表示されているスタイルが順番に適用されます。font:font_name, font_size:nstantiates uifontを使用して、キーで指定されたプロパティの値として設定します。この規則は、定数でも使用できます。ショートバージョンf: font_name, font_size。
font_nameは、システムフォントをロードするために従来の値を取得できます。
system`systemBold``systemItalic`
color:color_string: color_stringをレンダリングして、キーで指定されたプロパティを検証するためにuicolorをインスタンス化します。この規則は、定数でも使用できます。ショートバージョンc: color_string。nullまたはnil:キーに示されているプロパティをnilとして設定します。point:x,y:xとyの値を持つCGPOINTとしてプロパティを設定します。 xおよびyの値はフロートとして解釈されます。size:width,height:示された幅と高さの値を持つCGSIZEとしてプロパティを設定します。値はフロートとして解釈されます。rect:x,y,width,height:値x、y、幅、および高さを持つcgrectとしてプロパティを設定します。値はフロートとして解釈されます。edge:top,left,bottom,right:プロパティを上、左、下、右の値を持つUiedgeinsetsとして設定します。値はフロートとして解釈されます。
すでに述べたように、スタイルはスタイルグループの1つの辞書のように見え、任意のNSObject(通常はインターフェイス要素)に適用できます。辞書キーは次のとおりです。
- 鍵を与えられた慣習の1つ(専用の段落を参照)
- 様式化されるオブジェクトのプロパティ
- 様式化されるオブジェクトのプロパティの1つのキーパス(ex。「layer.bordercolor」)
- 不動産を示さないが、各オブジェクトがカテゴリnsobject+thememanagerから継承する適切な方法で処理される文字列(セクション特別プロパティ管理を参照)。
- 「、」で区切られたプロパティまたはキーパスのリスト(Es。TextColor、layer.bordercolor)。
示されているプロパティは、nsarray(iboutletcollectionなど)である場合もあります。この場合、値は配列内のすべてのオブジェクトに適用されます。
プリストで宣言されたスタイルをオブジェクトに適用するには、次のコード行を使用するだけです。
[[SDThemeManager sharedManager] applyStyleWithName:@"NomeStile" toObject:object];
指定されたオブジェクトも自己である可能性があります。
ライブラリには、メソッドを公開するカテゴリnsobject+thememanagerが含まれています。
- (void) applyThemeValue:(id)value forKeyPath:(NSString*)keyPath;
この方法は、いくつかのサブクラスのカテゴリによってオーバーライドされ、いくつかのプロパティを特別な方法で処理します。これらのカテゴリは、常にSYSDATAライブラリに含まれています。例えば。 uitextfield+thememanagerは、偽のプロパティプレイスコロールを管理して、「 astributedplaceholder」を使用します。
カテゴリnsobject+thememanagerはプロトコルを宣言します。
@protocol ThemeManagerCustomizationProtocol <NSObject>
@optional
- (BOOL) shouldApplyThemeCustomizationForKeyPath:(NSString*)keyPath;
- (void) applyCustomizationOfThemeValue:(id)value forKeyPath:(NSString*)keyPath;
@end
このプロトコルの方法により、ライブラリ自体の外でカスタムプロパティ管理が可能になります。これらは、前述のメソッドの実装を危険にさらすことを避けるために、ライブラリから使用する必要がある唯一の方法です。
この方法は、KeyPathのForKeyPath shouldApplyThemeCustomizationForKeyPath:手動で処理するキーパスについてのみYESを返す必要があります。
この方法は、次applyCustomizationOfThemeValue:forKeyPath:前の方法で受け入れられたキーパスのカスタム実装を含める必要があります。
ThemeManagerには必然的にデフォルトのテーマが必要であり、オプションで1つ以上の代替スタイルをメソッドで示すことができます。
- (void) setAlternativeThemes:(NSArray*)alternativeThemes
過去の配列には、代替テーマのプリストファイルの名前が含まれている必要があります。スタイルを適用しようとすると、ThemeManagerは最初の代替テーマでそれを探します。 2番目などで見つけられない場合。代替のテーマには示されたスタイルが含まれていない場合、テーママネージャーはデフォルトのテーマでそれを探します。
注文は重要です!!!
ThemeManagerのバージョン2は、後方互換性があります。古いプリスト形式での翻訳性を処理するには、新しいものを必然的にキー価値ペアを含める必要があります“formatVersion” : 2
次の方法では、プログラムの方法でテーマと一定の値を変更できます。
プログラム的な方法で定数の値を変更します。
- (void) modifyConstant:(NSString*)constant withValue:(id)value
特定のパスでのスタイルの値をプログラム的な方法で変更します。
- (void) modifyStlye:(NSString*)style forKeyPath:(NSString*)keyPath withValue:(id)value
注意:
デフォルトでは、スタイルを変更すると、いくつかのキーパスがバンドルのスタイル全体を新しいキーパスのみに置き換えます。基本的なテーマに設定された他のすべてのキーパス値をマンテインしたい場合は、継承をアクティブにします
- (void) modifyStyle:(NSString*)style inheritanceEnable:(BOOL)inheritanceEnable
すべての修正を保持するために、プログラムで設定されたセットを次のアプリ再起動で再生します。それ以外の場合、すべての変更が現在のセッションで利用可能になります。
- (void) synchronizeModifies
すべての修正をプログラムでリセットするには(modifyConstant:withvalue:or modifyStlye:forkeypath:withvalueを使用して)すべての変更をリセットするには:)
- (void) resetModifies