예제 프로젝트를 실행하려면 Repo를 복제하고 먼저 예제 디렉토리에서 pod install 실행하십시오.
Giotto는 Cocoapods를 통해 제공됩니다. 설치하려면 Podfile에 다음 줄을 추가하십시오.
pod "Giotto" Giotto는 Apache 라이센스에 따라 제공됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.
sdthememanager (따라서 TM이라고도 함)는 주로 GUI의 브랜드 변경이 필요한 응용 프로그램의 개발을 단순화하고 표준화하려는 의도로 태어납니다.
테마를 묘사하는 PLIST 에는 모든 상수가있는 상수 사전이 포함되어야하며, 다른 사전에서 원하는대로 스타일을 배열 할 수 있습니다.
글꼴 이름, 색상 또는 크기와 같은 모든 상수가 포함되어 있습니다. 기술적으로 그것은 <costant_name> : <costant_value> 과 같이 한 레벨 조직 사전입니다.
- Font Names : 키가
FONT_로 시작합니다.- 색상 코드 : 키는
COLOR_로 시작합니다.- 치수 (Integer O float) : 키는
DIMENSION_로 시작합니다.
Esempi :
{
“FONT_REGULAR” : “Helvetica-Neue”,
“COLOR_COMMON_BACKGROUND” : “color:000000FF”,
“DIMENSION_VIEW_WIDTH” : 3 // value is a NSNumber
}
컨벤션 color: 섹션 컨벤션 상수에 설명되어 있습니다. 상수는 배열 또는 사전을 값으로 포함 할 수 없습니다 .
상수와 같은 수준에서 다른 사전은 그래픽 스타일의 기능 그룹으로 정의 될 수 있습니다. 그룹 이름은 무료입니다. 기술적으로, 그들은 다음 <property_name> : <value_to_apply> 같이 조직화 된 사전입니다. <style_name> : <style_dictionary> 스타일 사전은 다음과 같이 구성됩니다.
{
“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: nstantiates를 uifont를 사용하여 키에 지정된 속성의 값으로 설정합니다. 이 협약은 상수로 사용될 수 있습니다. 짧은 버전f: font_name, font_size.
font_name은 기존 값을 사용하여 시스템 글꼴을로드 할 수 있습니다.
system`systemBold``systemItalic`
color:color_string: 컬러 _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로 속성을 설정하십시오. 값은 플로트로 해석됩니다.
이미 언급했듯이 스타일은 스타일 그룹 중 하나에서 사전처럼 보이며 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 는 가짜 속성 위장 보유자를 사용하여 ' AdribitedPlaceholder'를 사용합니다.
카테고리 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 파일 이름이 포함되어야합니다. 스타일을 적용하려고 할 때 Thememanager는 첫 번째 대안 테마에서이를 찾습니다. 두 번째로 찾을 수없는 경우. 대체 테마에 표시된 스타일이 포함되어 있지 않으면 Thememanager는 기본 테마에서이를 찾습니다.
주문이 중요합니다 !!!
TheMemanager의 버전 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 사용 : withValue : 또는 modifystlye : orkeypath : withvalue :)
- (void) resetModifies