ในการเรียกใช้โครงการตัวอย่างให้โคลน repo และเรียกใช้ pod install จากไดเรกทอรีตัวอย่างก่อน
Giotto มีให้บริการผ่าน Cocoapods หากต้องการติดตั้งเพียงเพิ่มบรรทัดต่อไปนี้ลงใน PodFile ของคุณ:
pod "Giotto" Giotto มีให้ภายใต้ใบอนุญาต Apache ดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม
SDTheMeManager (ต่อจากนี้เรียกว่า TM) เกิดขึ้นเป็นหลักด้วยความตั้งใจที่จะทำให้ง่ายขึ้นและสร้างมาตรฐานการพัฒนาแอปพลิเคชันที่ต้องการการเปลี่ยนโฉมของ GUI
plist ที่อธิบายธีมจะต้องมีพจนานุกรม ค่าคงที่ กับค่าคงที่ทั้งหมดในขณะที่รูปแบบสามารถจัดเรียงตามที่ต้องการในพจนานุกรมอื่น ๆ
มันมีค่าคงที่ทั้งหมดเช่นชื่อตัวอักษรสีหรือขนาด ในทางเทคนิคมันเป็นพจนานุกรมที่จัดระดับหนึ่งระดับดังนี้: <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: และ font: มีการอธิบายใน ส่วนการประชุม ส่วน
เพื่อเพิ่มความเร็วในการร่างชุดรูปแบบและเพื่อให้การจัดการของกรณีเฉพาะ แต่บ่อยครั้งมีการกำหนดอนุสัญญาต่อไปนี้:
_superstyle: สามารถป้อนในพจนานุกรมของสไตล์เพื่อระบุว่าสไตล์ที่สืบทอดมาจากสไตล์อื่น เมื่อสไตล์ "ผู้ปกครอง" ถูกนำไปใช้ก่อนสไตล์ "เด็ก" คุณสามารถเขียนทับแป้นพิมพ์ใน "เด็ก" คุณสามารถสืบทอดจากหลายสไตล์โดยการหารด้วย "," รูปแบบที่ระบุจะถูกนำไปใช้ตามลำดับดังนั้นรูปแบบที่แสดงหลังจากเขียนทับค่าของกุญแจที่มันมีเหมือนกันกับสไตล์ที่นำหน้าในรายการ
style:style_name1,style_name2: คุณสมบัติที่ระบุในคีย์นั้นมีสไตล์ด้วยสไตล์ที่แสดงในรายการ รูปแบบที่แสดงจะต้องมีอยู่ในหนึ่งในกลุ่มสไตล์ ตัวย่อเวอร์ชันs: style_name1,style_name2เป็น_superstyleสไตล์ที่แสดงจะถูกนำไปใช้ตามลำดับfont:font_name, font_size: NSTANTIATES A UIFONT และตั้งค่าเป็นค่าของคุณสมบัติที่ระบุในคีย์ การประชุมนี้ยังสามารถใช้ในค่าคงที่ เวอร์ชันสั้นf: font_name, font_size
font_nameสามารถใช้ค่าทั่วไปในการโหลดตัวอักษรของระบบ:
system`systemBold``systemItalic`
color:color_string: แสดงผล color_string เพื่อสร้างอินสแตนซ์ UICOLOR เพื่อตรวจสอบคุณสมบัติที่ระบุในคีย์ การประชุมนี้ยังสามารถใช้ในค่าคงที่ เวอร์ชันสั้นc: color_stringnullหรือnil: ตั้งค่าคุณสมบัติที่ระบุไว้ในคีย์เป็นnilpoint:x,y: ตั้งค่าคุณสมบัติเป็น cgpoint ด้วยค่า x และ y ค่า x และ y ถูกตีความว่าเป็นลอยsize:width,height: ตั้งค่าคุณสมบัติเป็น CGSize ด้วยค่าความกว้างและความสูงที่ระบุ ค่าถูกตีความว่าเป็นลอยrect:x,y,width,height: ตั้งค่าคุณสมบัติเป็น cgrect ที่มีค่า x, y, ความกว้างและความสูง ค่าถูกตีความว่าเป็นลอยedge:top,left,bottom,right: ตั้งค่าคุณสมบัติเป็น uiedgeinsets ที่มีค่าด้านบนซ้ายล่างและขวา ค่าถูกตีความว่าเป็นลอย
ดังที่ได้กล่าวไปแล้วสไตล์ดูเหมือนพจนานุกรมในหนึ่งในกลุ่มสไตล์และสามารถนำไปใช้กับ NSObject ใด ๆ (โดยทั่วไปคือองค์ประกอบอินเตอร์เฟส) คีย์พจนานุกรมสามารถ:
- หนึ่งในอนุสัญญาที่ได้รับกุญแจ (ดูย่อหน้าเฉพาะ)
- คุณสมบัติของวัตถุที่จะเก๋ไก๋
- จุดสำคัญของหนึ่งในคุณสมบัติของวัตถุที่จะมีสไตล์ (เช่น“ 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 จัดการ สถานที่เก็บ ทรัพย์สินปลอมเพื่อใช้ ' ผู้ถือหุ้น
หมวดหมู่ 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 มองหามันในธีมทางเลือกแรก หากคุณไม่พบในวินาทีและอื่น ๆ หากไม่มีชุดรูปแบบทางเลือกใดมีสไตล์ที่ระบุพวกเขาจะมองหามันในชุดรูปแบบเริ่มต้น
คำสั่งซื้อเป็นสิ่งสำคัญ !!!
เวอร์ชัน 2 ของ TheMemanager นั้นเข้ากันได้ย้อนหลัง ในการจัดการการเข้ากันได้แบบย้อนกลับด้วยรูปแบบ plist เก่ารูปแบบใหม่จำเป็นต้องมีคู่คีย์-ค่า: “formatVersion” : 2
วิธีการต่อไปนี้สามารถเปลี่ยนธีมและค่าคงที่ในวิธีการเขียนโปรแกรม
ปรับเปลี่ยนค่าของค่าคงที่ในวิธีการเขียนโปรแกรม
- (void) modifyConstant:(NSString*)constant withValue:(id)value
ปรับเปลี่ยนค่าสำหรับสไตล์ในเส้นทางที่กำหนดในวิธีการเขียนโปรแกรม
- (void) modifyStlye:(NSString*)style forKeyPath:(NSString*)keyPath withValue:(id)value
ความสนใจ :
โดยค่าเริ่มต้นการปรับเปลี่ยนสไตล์การตั้งค่าบางอย่างบางส่วนแทนที่สไตล์ทั้งหมดในชุดมัดด้วยกุญแจสำคัญใหม่เท่านั้น หากคุณต้องการ mantain ค่าปุ่มกดอื่น ๆ ทั้งหมดที่ตั้งอยู่ในธีมพื้นฐานให้ใช้งานการสืบทอด
- (void) modifyStyle:(NSString*)style inheritanceEnable:(BOOL)inheritanceEnable
เพื่อคงไว้ซึ่งการปรับเปลี่ยนทั้งหมดที่กำหนดโดยทางโปรแกรมเพื่อ retreive พวกเขาในการรีสตาร์ทแอปถัดไป มิฉะนั้นการแก้ไขทั้งหมดจะพร้อมใช้งานสำหรับเซสชันปัจจุบัน
- (void) synchronizeModifies
ในการรีเซ็ตการแก้ไขทั้งหมดที่ตั้งค่าเป็นโปรแกรม (โดยใช้ modifyConstant: withValue: หรือ modifystlye: forkeypath: withValue :)
- (void) resetModifies