要运行示例项目,请首先从示例目录中pod install 。
Giotto可通过可可录提供。要安装它,只需将以下行添加到您的podfile:
pod "Giotto" Giotto可在Apache许可下获得。有关更多信息,请参见许可证文件。
SDThemeManager(此后称为TM)的出生主要是为了简化和标准化需要重新命名GUI的应用程序的开发。
描述主题的PLIST必须包含一个带有所有常数的常数字典,而样式可以按照其他字典的要求进行排列。
它包含所有常数,例如字体名称,颜色或尺寸。从技术上讲,它是一个一个级别的组织字典,如下: <costant_name> : <costant_value>惯例构成的键具有以下前缀:
- 字体名称:键以
FONT_开头- 颜色代码:钥匙以
COLOR_开头- 尺寸(整数o float):键从
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:和font:在章节中解释
为了加快主题起草的速度并允许处理特定但频繁的情况,已经定义了以下惯例:
_superstyle:可以在样式的字典中输入,以表明该样式从另一种样式继承。当在“孩子”样式之前应用“父”样式时,您可以覆盖“孩子”中的键盘。您可以通过将它们依次将其划分为“”,从多种样式继承。指示的样式将按顺序应用,因此在覆盖其与列表中之前的样式相同的键盘值之后显示的样式。
style:style_name1,style_name2:密钥中指示的属性的样式对列表中列出的样式进行了风格。显示的样式必须存在于其中一个样式组中。缩写版本s: style_name1,style_name2。作为_superstyle按顺序应用了所示样式。font:font_name, font_size:nstantiating 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,width和高度的cgrect。值被解释为浮点。edge:top,left,bottom,right:将属性设置为具有顶部,左,底部和右值的Uiedgeinset。值被解释为浮点。
如前所述,样式看起来像是其中一个样式组中的字典,可以应用于任何nsobject(通常是接口元素)。字典键可以是:
- 限制键的惯例之一(请参阅专用段落)
- 物体的属性被风格化
- 要进行风格化对象的属性之一的键盘(例如,“ layer.bordercolor”)
- 一个不表示不动产但将以适当的方法来处理的字符串,每个对象从类别NSObject+thememanager继承(请参阅“特殊属性管理”部分)。
- 属性或键盘的列表,被“” (Es textColor,layer.bordercolor)隔开。
指示的属性也可能是NSArray(例如IBOutletCollection)。在这种情况下,该值将应用于数组中的所有对象。
要将在PLIST中声明的样式应用于对象,只需使用以下代码行:
[[SDThemeManager sharedManager] applyStyleWithName:@"NomeStile" toObject:object];
指示的对象也可能是自我。
该库包含一个类别nsobject+themeManager,该类别公开了该方法:
- (void) applyThemeValue:(id)value forKeyPath:(NSString*)keyPath;
该方法被一些子类的类别覆盖,以特殊的方式处理一些属性。这些类别始终包含在Sysdata库中。例如。 Uitextfield+themeManager管理伪造的物业占位库使用“归因地面持有人”。
类别NsObject+themeManager声明协议:
@protocol ThemeManagerCustomizationProtocol <NSObject>
@optional
- (BOOL) shouldApplyThemeCustomizationForKeyPath:(NSString*)keyPath;
- (void) applyCustomizationOfThemeValue:(id)value forKeyPath:(NSString*)keyPath;
@end
该协议的方法启用库本身之外的自定义属性管理。这些是必须在库中使用的唯一方法,以避免冒险实施先前描述的方法。
该方法shouldApplyThemeCustomizationForKeyPath:仅对于打算手动处理的键盘应返回YES 。
方法applyCustomizationOfThemeValue:forKeyPath:必须包含上一个方法接受的键盘的自定义实现。
themeManager必定需要一个默认主题,并且可以通过该方法指示一种或多种替代样式:
- (void) setAlternativeThemes:(NSArray*)alternativeThemes
过去的数组必须包含替代主题的PLIST文件的名称。当您尝试应用样式时,主题eNagemanager在第一个替代主题中寻找它。如果您在第二个中找不到它,依此类推。如果替代主题都不包含指示的样式,则主题势员在默认主题中寻求它。
订单很重要!!!
themanager的版本2向后兼容。要处理与旧PLIST格式的逆转兼容性,新的必须包含钥匙值对: “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:with value:或modifyStlye:forkeypath:with value :)
- (void) resetModifies