ios 主题切换 思路_iOS 使用 NSObject 的分类实现快速切换主题
PYTheme
An easy way to change theme through NSObject's category for iOS.
通過 NSObject 的分類實現(xiàn)使用簡單的主題更換。
Features
輕量級
低耦合
自動管理內(nèi)存
支持動態(tài)更換主題顏色
支持動態(tài)更換主題圖片
支持 CocoaPods
Requirements
iOS 7.0 or later
Xcode 7.0 or later
Architecture
NSObject+PYThemeExtension
Renderings
Usage
使用 CocoaPods:
pod "PYTheme"
導(dǎo)入主頭文件#import
手動導(dǎo)入:
將PYTheme文件夾中的所有文件拽入項目中
導(dǎo)入主頭文件#import "NSObject+PYThemeExtension.h"
具體使用
設(shè)置主題色
1. 添加控件的屬性 /方法到主題色池中
直接通過屬性
// 按鈕的背景色添加到主題色池中
[button py_addToThemeColorPool:@"backgroundColor"];
通過設(shè)置方法并且傳入方法對應(yīng)參數(shù)數(shù)組,參數(shù)中直接含有顏色參數(shù)
// 設(shè)置按鈕選中時字體顏色添加到主題色池中
[button py_addToThemeColorPoolWithSelector:@selector(setTitleColor:forState:) objects:@[PYTHEME_THEME_COLOR, @(UIControlStateSelected)]];
當(dāng)方法參數(shù)中沒有直接包含顏色參數(shù),而是經(jīng)過包裝(如使用 NSDictionary 包裝)
// 設(shè)置 tabBar 選中時字體顏色添加到主題色池中
NSMutableDictionary *attrSel = [NSMutableDictionary dictionary];
attrSel[NSForegroundColorAttributeName] = PYTHEME_THEME_COLOR;
[childController.tabBarItem py_addToThemeColorPoolWithSelector:@selector(setTitleTextAttributes:forState:) objects:@[attrSel, @(UIControlStateSelected)]];
2. 設(shè)置主題色
// 設(shè)置主題色為紅色
[self py_setThemeColor:[UIColor redColor]];
設(shè)置主題圖片與配色
1. 添加相關(guān)控件對象到主題圖片池中
// 添加 tabBarItem 到主題圖片池中
[tabBarItem py_addToThemeImagePool];
2. 根據(jù)需求設(shè)置控件的相關(guān)屬性
// 重新加載主題圖片,并設(shè)置主題色為紅色
[self py_reloadThemeImageWithThemeColor:[UIColor redColor] setting:^(const NSArray *objects) {
// 根據(jù)控件類型完成相關(guān)設(shè)置
}
使用注意
對象不能是UIAppearance,否則將無法添加到主題池中
如下:將導(dǎo)致 navigationBar 無法添加到主題色池中
// 獲取全局 navBar
UINavigationBar *navBar = [UINavigationBar appearance];
// 添加背景色到主題色池中
[navBar py_addToThemeColorPool:@"barTintColor"];
使用py_addToThemeColorPoolWithSelector:objects:設(shè)置參數(shù)數(shù)組時注意:
方法參數(shù)必須按順序一一對應(yīng),如果涉及到的主題色設(shè)置使用 PYTHEME_THEME_COLOR 宏定義代替
如果數(shù)組中某個參數(shù)為 nil ,需包裝為 [NSNull null] 對象再添加到數(shù)組中
如果要使圖片隨著主題色變化而渲染成主題顏色,需要設(shè)置RenderingMode為: UIImageRenderingModeAlwaysTemplate
期待
如果您在使用過程中有任何問題,歡迎issue me! 很樂意為您解答任何相關(guān)問題!
與其給我點 star ,不如向我狠狠地拋來一個 BUG !
如果想要參與這個項目的維護(hù)或者有好的功能,歡迎 pull request !
如果您想要更多的接口來自定義或者建議 /意見,歡迎issue me!我會根據(jù)大家的需求提供更多的接口!
如果您在使用中覺得略有不適,歡迎聯(lián)系我 QQ:499491531 ,希望一起完善此項目,讓它變成更強(qiáng)大,能夠滿足大多數(shù)用戶的需求!
Licenses
All source code is licensed under the MIT License.
總結(jié)
以上是生活随笔為你收集整理的ios 主题切换 思路_iOS 使用 NSObject 的分类实现快速切换主题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go 写入yaml_[Golang] 从
- 下一篇: oracle不空顺序输出,Oracle应