Sakurakit เป็นห้องสมุดที่มีน้ำหนักเบาและทรงพลังสำหรับแอปพลิเคชันเพื่อเปลี่ยนธีมหรือสกินแรงบันดาลใจจาก Swiftheme และ Dknightversion มันให้บริการโซ่และการเขียนโปรแกรมที่ใช้งานได้ซึ่งสามารถอ่านได้สำหรับรหัสของคุณมากขึ้น
中文介绍
สำหรับ การสาธิต ลองดูที่ Sakurademo_OC โครงการตัวอย่าง iOS ในพื้นที่ทำงาน คุณจะต้องเรียกใช้ pod install หลังจากดาวน์โหลด
sakura หมายถึง theme ดังต่อไปนี้ ตอนนี้ซากุระสำหรับแอพของคุณ
มีสามวิธีในการใช้ sakurakit ในโครงการของคุณ:
ใช้ cocoapods
คู่มือ
ใช้คาร์เธจ
Cocoapods เป็นตัวจัดการการพึ่งพาสำหรับ Objective-C ซึ่งจะทำให้กระบวนการใช้ห้องสมุดที่สามในโครงการของคุณง่ายขึ้น
podfile
platform :ios, '8.0'
pod 'SakuraKit'
ดาวน์โหลด ZIP ของ Repo และลากไฟล์ ทั้งหมด ในโฟลเดอร์ Sakurakit ไปยังโครงการของคุณ
คาร์เธจเป็นตัวจัดการการพึ่งพากระจายอำนาจที่สร้างการพึ่งพาของคุณและให้กรอบไบนารีแก่คุณ
คุณสามารถติดตั้ง Carthage ด้วย Homebrew โดยใช้คำสั่งต่อไปนี้:
$ brew update
$ brew install carthage
หากต้องการรวม sakurakit เข้ากับโครงการ XCode ของคุณโดยใช้ Carthage ให้ระบุใน CartFile ของคุณ:
github "tingxins/SakuraKit"
เรียกใช้ Carthage เพื่อสร้างเฟรมเวิร์กและลาก Sakurakit.framework Framework ลงในโครงการ XCode ของคุณ
นี่คือตัวอย่างกำหนดค่าสกินสำหรับ UIButton เป็นตัวอย่างต่อไปนี้
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
button.sakura
.backgroundColor(@"Home.buttonBackgroundColor")
.titleColor(@"Home.buttonTitleColor", UIControlStateNormal);
เห็นได้ชัดว่าเป็นรหัสแสดง มันเป็นเพียงการกำหนดค่า backgroundColor และ titleColor ของผิวหนังสำหรับปุ่ม หากคุณต้องการสลับธีมหรือสกินสำหรับแอพของคุณ เพียงแค่เรียก API นี้ให้ใช้ TXSakuraManager :
// name: name of a theme or skin.
// type: TXSakuraTypeMainBundle or TXSakuraTypeSandBox
+ (BOOL)shiftSakuraWithName:(TXSakuraName *)name type:(TXSakuraType)type;
สำหรับบรรทัดของรหัสด้านบน คุณอาจรู้สึกงุนงงกับตัวอักษรบางอย่างเช่น Home.buttonBackgroundColor หรือ Home.buttonTitleColor ไม่ต้องกังวลเราจะมุ่งเน้นไปที่วิธีการตั้งค่าโปรไฟล์สำหรับซากุระทีละขั้นตอนในภายหลัง
ตอนนี้มามุ่งเน้นไปที่โปรไฟล์ กล่าวโดยสรุปโปรไฟล์เป็นวิธีง่ายๆในการจัดการธีมหรือผิวหนังสำหรับการตั้งค่าแอปพลิเคชันของคุณในโครงการ (ที่จริงแล้วโปรไฟล์ซากุระชอบแอปของคุณ จำกัด เฉพาะ)
Sakurakit รองรับทั้งรูปแบบ. json & .plist ของไฟล์ สำหรับตัวอย่างไฟล์. json คุณควรกำหนดค่าเช่นนี้:
{
"Home":{
"buttonBackgroundColor":"#BB503D",
"buttonTitleColor":"#4AF2A1"
}
}
ดังที่แสดงไว้ข้างต้นเราสามารถรู้ได้ว่าตัวอักษรของ Home.buttonBackgroundColor และ Home.buttonTitleColor เป็นเพียง KeyPath สำหรับพจนานุกรม Sakurakit จะดึงค่าจากธีมการสลับโปรไฟล์หรือสกินสำหรับแอปของคุณเช่นสี/ไอคอนชื่อ/ข้อความ/fontsize.eg
ข้อควรระวัง:
ชุดรูปแบบชุดมีอยู่ในชุดแอปของคุณ เราเรียกว่า ธีมท้องถิ่น เราควรกำหนดค่าชุดรูปแบบเริ่มต้นสำหรับแอปเสมอ แน่นอน Sakurakit สามารถเพิ่มชุดรูปแบบหลายชุดสำหรับแอปของคุณตามขั้นตอนเหล่านี้:
ก่อนอื่นให้สร้าง [ SakuraName ] .json โปรไฟล์ ตรวจสอบให้แน่ใจว่า SakuraName เป็นชื่อธีมของคุณ ตัวอย่างเช่นหากคุณต้องการเพิ่มชุดรูปแบบชุดใหม่ที่ชื่อ typewriter โปรไฟล์ที่เกี่ยวข้องควรมีชื่อว่า typewriter.json
ถัดไปกำหนดค่าไอคอนสำหรับชุดรูปแบบ typewriter และชื่อของไอคอนจำเป็นต้องแยกแยะความแตกต่างกับธีมท้องถิ่นอื่น ๆ ตัวอย่างเช่น. หากไอคอนชื่อ cm2_btm_icn_account ในชุดรูปแบบ เริ่มต้น ไอคอนที่เกี่ยวข้องในชุดรูปแบบ typewriter ควรตั้งชื่อเหมือน cm2_btm_icn_account_xxx นี้
หลังจากขั้นตอนที่ 1 & 2 คุณควรลงทะเบียนธีมซากุระท้องถิ่นทั้งหมดใน AppDelegate (ธีม เริ่มต้น สามารถละเว้นได้)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Coding ...
[TXSakuraManager registerLocalSakuraWithNames:@[@"typewriter"]];
// Coding ...
return YES;
}
ณ จุดนี้เราได้กำหนดค่าธีมชุดทั้งหมด เราสามารถเปลี่ยนไปใช้ธีมเหล่านี้ได้ตลอดเวลา ตัวอย่างเช่น. หากคุณต้องการเปลี่ยนเป็นชุดรูปแบบชุดข้อมูลที่ระบุซึ่งชื่อ typewriter เพียงแค่เรียก api แบบนี้:
[TXSakuraManager shiftSakuraWithName:@"typewriter" type:TXSakuraTypeMainBundle];
ธีม Sandbox โดยใช้แพ็คเกจบีบอัด (.zip) พร้อมโฟลเดอร์ซึ่งมี โปรไฟล์ และ ไอคอน และเรายังเรียกว่า ธีมระยะไกล ผู้ใช้สามารถดาวน์โหลดผ่านเครือข่ายจากเซิร์ฟเวอร์ เซิร์ฟเวอร์สามารถอัปโหลดหลายธีมแบบไดนามิกจากนั้นผู้ใช้สามารถดาวน์โหลดได้จากแอพ
เกี่ยวกับคำแนะนำรูปแบบข้อมูลรูปแบบระยะไกลให้ตัวอย่าง: (FYI)
{
"name": "I'm a monkey",
"sakuraName": "monkey",
"url": "http:\image.tingxins.cnsakuramonkey.zip"
}
sakuraName เป็นชื่อธีมของคุณ และ url เป็นที่อยู่ URL ระยะไกลของธีมซากุระ (หมายเหตุ: หากฟิลด์ Sakuraname ผ่าน NIL ชื่อของธีมที่เกี่ยวข้องจะเริ่มต้นเป็นชื่อของแพ็คเกจดาวน์โหลด)
เมื่อดาวน์โหลดธีมระยะไกลเราสามารถสลับธีมเช่นนี้:
[TXSakuraManager shiftSakuraWithName:sakuraName type:TXSakuraTypeSandBox];
เกี่ยวกับบางสิ่งที่น่าตื่นเต้นสำหรับคุณ Sakurakit ยังมี API บางอย่างที่คุณสามารถใช้ในการดาวน์โหลดธีมระยะไกล และรองรับทั้งการโทร Block และ Delegate ยอดเยี่ยมมากใช่มั้ย และแน่นอนคุณสามารถปรับแต่งการดาวน์โหลดของคุณเองสำหรับธีมระยะไกล
มาพูดถึงเรื่องนี้กันเลย
หากคุณต้องการดาวน์โหลดธีมซากุระ คุณสามารถโทรไปที่บล็อกงานดาวน์โหลด API เช่นนี้ แสดงรหัสของกรณีการใช้งาน:
[[TXSakuraManager manager] tx_sakuraDownloadWithInfos:sakuraModel downloadProgressHandler:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
// Sakura theme download progress callback
} downloadErrorHandler:^(NSError * error) {
// Sakura theme download error callback
} unzipProgressHandler:^(unsigned long long loaded, unsigned long long total) {
// Unzip sakura theme compressed package progress callback
} completedHandler:^(id<TXSakuraDownloadProtocol> infos, NSURL * location) {
// completed callback
} ];
ในตัวอย่างนี้วัตถุของ sakuraModel สอดคล้องกับ TXSakuraDownloadProtocol คุณสามารถตรวจสอบ Sakurademo_OC สำหรับรายละเอียดเพิ่มเติมใน DownloadSakuraController
หากคุณต้องการดาวน์โหลดธีมซากุระ คุณสามารถโทรไปที่ API Task Task API แบบนี้:
[[TXSakuraManager manager] tx_sakuraDownloadWithInfos:sakuraModel delegate:self];
ใช้วิธีการมอบหมายที่คุณต้องการ
// If download task of sakura theme is already exist or already exist in sandbox, this API will callback.
- (void)sakuraManagerDownload:(TXSakuraManager *)manager
downloadTask:(NSURLSessionDownloadTask *)downloadTask
status:(TXSakuraDownloadTaskStatus)status;
// completed callback
- (void)sakuraManagerDownload:(TXSakuraManager *)manager
downloadTask:(NSURLSessionDownloadTask *)downloadTask
sakuraInfos:(id<TXSakuraDownloadProtocol>)infos
didFinishDownloadingToURL:(NSURL *)location;
// Sakura download progress callback
- (void)sakuraManagerDownload:(TXSakuraManager *)manager
downloadTask:(NSURLSessionDownloadTask *)downloadTask
didWriteData:(int64_t)bytesWritten
totalBytesWritten:(int64_t)totalBytesWritten
totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite;
/** Reserved for future use */
- (void)sakuraManagerDownload:(TXSakuraManager *)manager
downloadTask:(NSURLSessionDownloadTask *)downloadTask
didResumeAtOffset:(int64_t)fileOffset
expectedTotalBytes:(int64_t)expectedTotalBytes;
// Sakura theme download error callback
- (void)sakuraManagerDownload:(TXSakuraManager *)manager
sessionTask:(NSURLSessionTask *)downloadTask
didCompleteWithError:(nullable NSError *)error;
// Unzip sakura theme compressed package progress callback
- (void)sakuraManagerDownload:(TXSakuraManager *)manager
downloadTask:(NSURLSessionDownloadTask *)downloadTask
progressEvent:(unsigned long long)loaded
total:(unsigned long long)total;
คุณสามารถตรวจสอบ Sakurademo_OC สำหรับรายละเอียดเพิ่มเติมใน AppDelegate
หากคุณไม่ต้องการใช้ API เพื่อดาวน์โหลดธีมระยะไกลที่ Sakurakit ให้ไว้คุณสามารถปรับแต่งการดาวน์โหลดของคุณเองสำหรับธีมซากุระ
แสดงรหัสที่คุณต้องการ:
// `sakuraModel` conform to `TXSakuraDownloadProtocol`. location is theme compressed package path that downloaded。
[[TXSakuraManager manager] tx_generatePathWithInfos:sakuraModel downloadFileLocalURL:location successHandler:^(NSString *toFilePath, NSString *sakuraPath, TXSakuraName *sakuraName) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
BOOL isSuccess = [SSZipArchive unzipFileAtPath:toFilePath toDestination:sakuraPath delegate:self];
// Note: Be sure that call this API to format theme path if you are customize your own download operation. otherwise, when switching theme you may be failed.
[TXSakuraManager formatSakuraPath:sakuraPath cleanCachePath:toFilePath];
dispatch_sync(dispatch_get_main_queue(), ^{
if (isSuccess) {
[TXSakuraManager shiftSakuraWithName:sakuraName type:TXSakuraTypeSandBox];
}
});
});
} errorHandler:^(NSError * _Nullable error) {
NSLog(@"errorDescription:%@",error);
}];
ถาม: ทำไมแต่ละชุดรูปแบบถึงมีโปรไฟล์ของตัวเอง?
ตอบ: เนื่องจากแต่ละธีมข้างชื่อของไอคอนเหมือนกันและสีพื้นหลังที่แตกต่างกันขนาดตัวอักษรอาจไม่เหมือนกัน ดังนั้นแต่ละธีมควรมีโปรไฟล์ของตัวเองเว้นแต่คุณจะต้องการสร้างชุดรูปแบบสำหรับไอคอนเท่านั้น
ถาม: เหตุใดชื่อซากุระจึงควรสอดคล้องกับชื่อโปรไฟล์ของชุดรูปแบบที่เกี่ยวข้อง?
ตอบ: นี่เป็นเพียงการประชุมสำหรับเรา เมื่อสลับธีม Sakurakit จะผ่านชื่อธีมเพื่อค้นหาธีมในเส้นทางท้องถิ่นหรือในเส้นทาง Sandbox ทำให้ทั้งธีมและชื่อโปรไฟล์เหมือนกันคุณจะลดภาระงานที่ไม่จำเป็น
ถาม: อะไรคือความแตกต่างระหว่างธีมชุดมัดและกล่องทราย?
ตอบ: จริงๆแล้ว. ชุดรูปแบบชุดเราเรียกว่าธีมท้องถิ่น ธีมระยะไกลยังเรียกว่าธีม Sandbox
ถาม: Sakurakit มีเวอร์ชันที่เขียนด้วย Swift หรือไม่?
ตอบ: ไม่จะมาเร็ว ๆ นี้ ถ้าคุณต้องการมันจริงๆตอนนี้ นี่คือตัวอย่างสำหรับการใช้ Swift กับ Sakurakitoc (Sakurakitocforswiftdemo)
อย่างแน่นอน, คุณสามารถมีส่วนร่วมในโครงการนี้ตลอดเวลาหากคุณต้องการ
หากคุณ ต้องการความช่วยเหลือหรือถามคำถามทั่วไป เพียง @tingxins ใน Weibo หรือ Twitter แน่นอนคุณสามารถเข้าถึง บล็อก ของฉันได้
หากคุณ พบข้อผิดพลาด เพียงแค่เปิดปัญหา
หากคุณ มีคำขอคุณสมบัติ เพียงเปิดปัญหา
หากคุณ ต้องการมีส่วนร่วม ให้แยกที่เก็บนี้แล้วส่งคำขอดึง
SakuraKit มีให้บริการภายใต้ใบอนุญาต MIT ดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม
ยินดีต้อนรับสู่การติดตามบัญชีอย่างเป็นทางการของ WeChat