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