精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Swift主題色頂級解決方案

移動開發 iOS
主題色的設置點,大體從上面四個方面著手,圖片的主題色我們可通過圖片更換的方式進行處理。而通過代碼來處理的 1-3 條,有著不同的處理方法。

一、常規主題色使用點

應用在發布前都會對主題色進行設置,以統一應用的風格(可能有多套主題)。在主題色設置上有幾個方面,如下:

1. TabBar部分,設置圖片高亮、文本高度顏色

2. NavigationBar部分,設置導航欄顏色及字體顏色

3. 應用標簽等,設置字體的顏色

4. 應用圖片主題色

主題色的設置點,大體從上面四個方面著手,圖片的主題色我們可通過圖片更換的方式進行處理。而通過代碼來處理的 1-3 條,有著不同的處理方法。大家常規處理方法如下:

步驟一:變化分離

1. 利用Swift擴展語法擴展UIColor,將應用主題色在擴展中統一處理(適合單一主題色)

2. 將主題色的配置寫入文件中,由相應邏輯進行解析。此方法將主題色邏輯封裝成主題色管理類(適合多套主題)

步驟二:離散使用上步封裝的類

1.在任何使用主題色的地方,使用擴展中的UIColor方法來設置,一般包括背景色,文字顏色等

這里給出UIColor的擴展

  1. extension UIColor { 
  2.   
  3.     //主題色 
  4.     class func applicationMainColor() -> UIColor { 
  5.         return UIColor(red: 238/255, green: 64/255, blue: 86/255, alpha:1
  6.     } 
  7.   
  8.     //第二主題色 
  9.     class func applicationSecondColor() -> UIColor { 
  10.         return UIColor.lightGrayColor() 
  11.     } 
  12.   
  13.     //警告顏色 
  14.     class func applicationWarningColor() -> UIColor { 
  15.         return UIColor(red: 0.1, green: 1, blue: 0, alpha: 1
  16.     } 
  17.   
  18.     //鏈接顏色 
  19.     class func applicationLinkColor() -> UIColor { 
  20.         return UIColor(red: 59/255, green: 89/255, blue: 152/255, alpha:1
  21.     } 
  22.   

二、TabBar主題色設置

很多應用中,默認情況下都使用了TabBar控件,但是TabBar主題色等設置根據使用情況的不同,設置起來也不一樣。代碼創建比較靈活,更改主題色比較容易。而使用了Xib/Storyboard也是有辦法做統一處理的,如下,迭代更改TabBar默認字體顏色

  1. func configTabBar() { 
  2.        let items = self.tabBar.items 
  3.        for item in items as [UITabBarItem] { 
  4.            let dic = NSDictionary(object: UIColor.applicationMainColor(), 
  5.             forKey:   NSForegroundColorAttributeName) 
  6.            item.setTitleTextAttributes(dic, 
  7.             forState: UIControlState.Selected) 
  8.        } 
  9.    } 

設置TabBar圖片及文字默認選中顏色

self.tabBar.selectedImageTintColor = UIColor.applicationMainColor()

Tips注意事項

Changing this property’s value provides visual feedback in the user interface, including the running of any associated animations. The selected item displays the tab bar item’s selectedImage image, using the tab bar’s selectedImageTintColor value. To prevent system coloring of an item, provide images using the UIImageRenderingModeAlwaysOriginal rendering mode.

在一些情況,正常狀態為白色圖片時,真機測試時,白色圖片會出現偏色(顯示結果為灰色),這是因為系統默認著色導致的,在創建UITabBarItem時,可通過使用UIImageRenderingModeAlwaysOriginal避免。示例代碼如下:

  1. let imageNormal = UIImage(contentsOfFile: "imageNormal")?. 
  2. imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
  3. let imageSelected = UIImage(contentsOfFile: "imageSelected"
  4. let tabBarItem = UITabBarItem(title: "title"
  5.          image: imageNormal, 
  6.          selectedImage: imageSelected 

三、一勞永逸,利用Hook原理通設NavigationBar顏色

iOS應用中,NavigationBar十分常用,它的使用主要包括以下兩個場景

1. 代碼直接構建

2. Xib/Storyboard構建

如果是純代碼構建的時候,比較簡單,直接使用UIColor的擴展來設置顏色。實際項目中,有些界面是通過Xib/Storyboard來創建的,有些是代碼寫的,但這也難不到大家,使用繼承。創建一個繼承自UINavigationController的子類,通過這個子類來統一設置主題色。然后告訴項目中的所有人,強制使用UINavigationController子類,包括Xib/Storyboard等。問題是舊項目怎么辦,這種強制要求可以工作,有沒有一個更好的辦法,讓所有人正常使用UINavigationController,而在神不知鬼不覺的情況下,通設所有NavigationBar呢? 先上代碼,再解釋

1.創建一個UIViewController的擴展

  1. extension UIViewController { 
  2.     func viewDidLoadForChangeTitleColor() { 
  3.         self.viewDidLoadForChangeTitleColor() 
  4.         if self.isKindOfClass(UINavigationController.classForCoder()) { 
  5.            self.changeNavigationBarTextColor(self as UINavigationController) 
  6.         } 
  7.     } 
  8.   
  9.     func changeNavigationBarTextColor(navController: UINavigationController) { 
  10.         let nav = navController as UINavigationController 
  11.         let dic = NSDictionary(object: UIColor.applicationMainColor(), 
  12.          forKey:NSForegroundColorAttributeName) 
  13.         nav.navigationBar.titleTextAttributes = dic 
  14.         nav.navigationBar.barTintColor = UIColor.applicationSecondColor() 
  15.         nav.navigationBar.tintColor = UIColor.applicationMainColor() 
  16.   
  17.     } 
  18.   

2. 編寫用于Hook的工具類

  1. func swizzlingMethod(clzz: AnyClass, #oldSelector: Selector, #newSelector: Selector) { 
  2.     let oldMethod = class_getInstanceMethod(clzz, oldSelector) 
  3.     let newMethod = class_getInstanceMethod(clzz, newSelector) 
  4.     method_exchangeImplementations(oldMethod, newMethod) 

3. 在AppDelegate中調用

  1. func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { 
  2.         swizzlingMethod(UIViewController.self, 
  3.         oldSelector: "viewDidLoad"
  4.         newSelector: "viewDidLoadForChangeTitleColor"
  5.   //do others 
  6.         return true 
  7.     } 

4. 原理說明

在程序入口處,通過運行時機制,動態的替換UIViewController的周期方法viewDidLoad 為我們指定的方法 viewDidLoadForChangeTitleColor 。在viewDidLoadChangeTitleColor 中,需要做兩件事:

· 調用原來的 viewDidLoad 方法

· 執行修改主題色相關代碼

如何調用原來的viewDidLoad方法:

在AppDelegate中,通過調用方法 swizzlingMethod 我們將 viewDidLoad 與viewDidLoadForChangeTitleColor 方法體進行了替換,原理如下圖:

從上面的圖可以看出,當在 viewDidLoadForChangeTitleColor 中執行:

  1. self.viewDidLoadForChangeTitleColor() 

是不會造成循環調用,反而是調用了我們期望執行的 viewDidLoad 方法體。

三、Xib/Storyboard的處理

一些在Xib/Storyboard中設置的主題色,比如文本顏色,按鈕的高亮顏色等,該如何處理呢,以UILabel為例,建立擴展

  1. extension UILabel { 
  2.     var colorString: String { 
  3.         set(newValue) { 
  4.             switch newValue { 
  5.             case "main"
  6.                 self.textColor = UIColor.applicationMainColor() 
  7.             case "second"
  8.                 self.textColor = UIColor.applicationSecondColor() 
  9.             case "warning"
  10.                 self.textColor = UIColor.applicationWarningColor() 
  11.             default
  12.                 self.textColor = UIColor.applicationSecondColor() 
  13.             } 
  14.         } 
  15.         get { 
  16.             return self.colorString 
  17.         } 
  18.     } 

在Xib/Storyboard的查檢器中進行編輯,如下圖:

四、總結

1.只有一套主題時,上面的方法可以直接復制使用,在更換主題時,只需要更換相應圖片及修改UIColor的擴展類。

2.在有多套主題,用戶可以自由切換主題時,可以按文章中的Hook機制,對viewWillAppear 進行劫持,也可以輕松實現主題的改變。

本文鏈接:http://www.cocoachina.com/swift/20141127/10336.html

責任編輯:chenqingxiang 來源: cocoachina
相關推薦

2021-07-15 13:57:34

災難恢復DRaaS數據中心

2015-05-14 09:31:10

2018-12-03 12:26:30

YADRO解決方案

2018-12-03 11:59:42

Inventec解決方案

2018-12-03 12:13:21

Mellanox解決方案

2018-12-03 12:17:27

Semptian解決方案

2012-05-27 16:21:31

IDC華為

2016-03-13 17:58:57

2016-03-13 17:35:18

2009-12-23 21:06:47

統一通信多媒體聯絡中心平臺華為

2011-12-09 11:13:17

2012-05-28 13:30:00

華為SmartCDN

2010-12-24 13:05:22

2011-05-05 15:36:25

深信服廣域網加速

2010-10-21 21:53:46

IMOSIP多媒體H3C

2009-03-05 10:38:00

2010-12-24 12:51:36

2018-12-03 12:04:10

Kyligence解決方案

2012-05-27 18:09:33

NAG Cache華為

2010-12-21 17:38:12

點贊
收藏

51CTO技術棧公眾號

成人午夜影视| аⅴ天堂中文在线网| 96av在线| 国产色产综合色产在线视频| 国产欧美日韩91| 麻豆国产尤物av尤物在线观看| 久久动漫网址| 欧美日韩日日骚| 欧美激情视频免费看| 粉嫩av一区| 国产激情一区二区三区| 热草久综合在线| 少妇aaaaa| 九九热精品视频在线观看| 91精品在线麻豆| 日本男女交配视频| 高清日韩av电影| 成人福利电影精品一区二区在线观看| 国产成人精品一区二区三区| 一区二区在线观看免费视频| 少妇精品久久久| 日韩欧美一区二区久久婷婷| 国产情侣av自拍| 91九色在线看| 亚洲欧美偷拍三级| 日韩中文字幕av在线| 免费激情视频网站| 激情五月激情综合网| 欧美中文字幕在线播放| 中文字幕在线观看成人| 国产原创中文av| 国产在线视频网站| 国产成人啪免费观看软件 | 性网站在线观看| 国产免费成人在线视频| 久久亚洲午夜电影| 丰满熟妇乱又伦| 国产一区二区三区黄视频| 日韩美女av在线免费观看| 国产污片在线观看| 欧美成熟视频| 超碰91人人草人人干| 纪美影视在线观看电视版使用方法| 欧美午夜寂寞| 亚洲风情亚aⅴ在线发布| 女人扒开腿免费视频app| 91精品国产自产观看在线| 欧美在线免费观看视频| 激情五月开心婷婷| 在线精品亚洲欧美日韩国产| 精品日本美女福利在线观看| 欧美日韩福利在线| 97在线视频免费观看完整版| 亚洲福中文字幕伊人影院| 日韩成人三级视频| 四虎亚洲精品| 亚洲妇女屁股眼交7| av网站手机在线观看| 2021中文字幕在线| 午夜av一区二区三区| 久久艹国产精品| 日本久久中文字幕| 欧美日韩国产电影| 国产精品综合一区二区三区| 日本高清无吗v一区| 99在线免费视频观看| 免费看电影在线| 亚洲国产成人tv| 5月婷婷6月丁香| 综合另类专区| 欧美激情综合色综合啪啪| 欧美日韩亚洲综合在线| 欧美成人三级在线播放| 久久久久久久9| 国产肉体xxxx裸体784大胆| 强制高潮抽搐sm调教高h| 国产色99精品9i| 日韩午夜三级在线| 中国男女全黄大片| 超碰97久久国产精品牛牛| 亚洲国产精久久久久久久| 亚洲精品乱码久久久久久久| 亚洲欧洲色图| 日韩在线欧美在线| 黄色一级片中国| 亚洲激情亚洲| 国产成人久久久| 亚洲午夜精品久久久| 国产精品一品视频| 国产一区二区在线观看免费播放| 天堂a中文在线| 韩国欧美国产1区| 国产乱子伦视频一区二区三区 | 国产精品影院在线| 国产精品久久久久婷婷| www.男人天堂网| 91精品国自产在线| 精品伊人久久久| 中文字幕亚洲自拍| 国产午夜视频在线播放| 人妻丰满熟妇av无码区| 女人抽搐喷水高潮国产精品| 国产一区二区美女视频| 一级黄色录像视频| 视频一区二区国产| 99re在线观看视频| 国产精品久久久久一区二区国产| 亚洲三级免费电影| 成人观看免费完整观看| 国产一区二区三区精品在线观看 | 色婷婷一区二区三区在线观看| aaa国产精品视频| 中文欧美日本在线资源| 国产亚洲第一页| 激情国产一区二区 | 93在线视频精品免费观看| 久久久久免费视频| 国产口爆吞精一区二区| 国产情人综合久久777777| 亚洲色成人www永久在线观看 | 国产精品久久波多野结衣| 91亚洲欧美| 高跟丝袜欧美一区| 无码人妻丰满熟妇啪啪网站| av老司机久久| 免费成人av在线| 精品国产中文字幕| 色在线视频网| 久久草在线视频| 日韩欧美成人午夜| 黄色免费一级视频| 久久精品中文| 精品网站在线看| 青草av在线| 91精品免费在线观看| 免费看黄色三级| 国产精品久久久久久模特| 岛国视频一区免费观看| 国产乱色在线观看| 69久久夜色精品国产69蝌蚪网| 国产aⅴ激情无码久久久无码| 亚洲免费播放| 国产日韩一区欧美| 成人性生交大片免费看网站 | 国产综合在线视频| 丰满大乳国产精品| 亚洲一区二区视频在线观看| 永久看看免费大片| 一区二区三区在线观看免费| 91亚洲精品视频| 黄色av电影在线播放| 欧美猛男超大videosgay| 国产馆在线观看| 九九久久精品视频| 黄色网址在线免费看| 国产一区二区高清在线| 久久亚洲国产精品| 99精品久久久久久中文字幕| 亚洲欧美一区二区三区孕妇| 欧洲在线免费视频| 欧美日韩亚洲一区三区| 国产精品sss| 欧美13videosex性极品| 亚洲视频777| 伊人久久国产精品| 亚洲视频1区2区| 国产裸体视频网站| 在线视频精品| 日韩免费三级| 亚洲青青久久| 欧美多人爱爱视频网站| 少妇人妻精品一区二区三区| 欧美性猛交xxxx免费看久久久| 国产在线综合视频| 国产精品一二三区在线| 日本www在线视频| 国产毛片一区二区三区| 成人av在线亚洲| 第一中文字幕在线| 一本色道久久88亚洲综合88| 国产精品久久成人免费观看| 亚洲精品第二页| 亚洲二区三区不卡| 国产精品二区三区四区| 日韩伦理在线| 中文字幕亚洲欧美| www.97av| 91久久国产最好的精华液| 国产传媒免费在线观看| 成人va在线观看| 冲田杏梨av在线| 欧美激情aⅴ一区二区三区| 开心色怡人综合网站| 玖玖精品在线| 97视频在线播放| 最新97超碰在线| 亚洲高清一区二| 亚洲视频在线观看免费视频| 亚洲成人午夜影院| 国产午夜精品久久久久久久久| 国产成人免费xxxxxxxx| wwwwxxxx日韩| 国产精品婷婷| 亚洲国产精品女人| 国产调教一区二区三区| 国产91aaa| 国产国产一区| 26uuu亚洲国产精品| 二区三区在线观看| 亚洲欧美日韩网| 精品人妻一区二区三区麻豆91 | 国产男男gay体育生白袜| 国产成人99久久亚洲综合精品| 久久久精品在线视频| 欧美fxxxxxx另类| 日韩资源av在线| 豆花视频一区二区| 91美女片黄在线观看游戏| 中文字幕一区久| 欧美精品www| 国产一二区在线| 在线观看日韩专区| 三区在线观看| 精品国产伦一区二区三区免费 | 亚洲av无一区二区三区| 91欧美激情一区二区三区成人| 伊人成人免费视频| 麻豆91精品视频| 99免费视频观看| 国产精品婷婷| 久久视频这里有精品| 国产在线不卡| 在线观看污视频| 久久久久久美女精品 | 欧洲生活片亚洲生活在线观看| 91蜜桃视频在线观看| 亚洲一线二线三线久久久| 九九这里只有精品视频| 国产精品三级av| 人与嘼交av免费| 国产欧美日韩不卡| 少妇久久久久久久久久| 久久亚洲捆绑美女| 玖玖爱在线观看| 久久综合国产精品| 中文字幕国产专区| 国产色婷婷亚洲99精品小说| 男人天堂av电影| 日本一区二区三区国色天香| 99久久精品免费视频| 国产女主播视频一区二区| 精品国产成人亚洲午夜福利| 国产欧美一区二区精品性色超碰| 韩国无码一区二区三区精品| 91色视频在线| 高潮毛片无遮挡| 国产精品国产三级国产a| 国产大屁股喷水视频在线观看| 国产精品白丝在线| 日韩国产第一页| 亚洲一区影音先锋| 日韩大片免费在线观看| 日韩欧美在线视频免费观看| 精品国产乱子伦| 欧美三区在线观看| 国产乱子伦精品无码码专区| 欧美一级黄色大片| 亚洲精品久久久狠狠狠爱| 亚洲韩国青草视频| 你懂得在线网址| 中文字幕亚洲无线码a| 欧美日韩在线资源| 日本丶国产丶欧美色综合| 国产免费一区| 91精品网站在线观看| 超碰97在线播放| 日韩av系列| 亚洲成人精品电影在线观看| 91精品高清| 欧美深夜福利视频| 免费在线欧美视频| 国产黄色一区二区三区| 成人av在线播放网址| 99久久精品免费视频| 亚洲乱码国产乱码精品精可以看| 国产成人愉拍精品久久| 日韩免费va| 深夜福利亚洲导航| 青春草在线视频| 国产97人人超碰caoprom| 欧美综合影院| 国产日韩久久| 日韩国产一区二区| 欧美 日韩 亚洲 一区| 美国一区二区三区在线播放| 亚洲美女精品视频| 欧美国产精品一区| 中文在线观看免费网站| 91九色最新地址| 亚洲第九十九页| 国产亚洲欧洲高清| 91超碰在线播放| 国产专区精品视频| 伊人久久大香线蕉无限次| 中国黄色录像片| 三级欧美韩日大片在线看| av在线天堂网| 国产精品午夜久久| 在线观看国产亚洲| 日韩三级视频在线看| 成人av一区| 2020欧美日韩在线视频| 久久精品九色| 亚洲在线不卡| 葵司免费一区二区三区四区五区| 少妇熟女视频一区二区三区| 国产精品久久久久三级| 黄色在线视频网址| 精品福利一区二区三区免费视频| 色哟哟免费在线观看| 2021国产精品视频| 久久99国产精品久久99大师| 亚洲自拍偷拍一区二区三区| 日本sm残虐另类| 亚洲精品理论片| 午夜精品久久久久久久久久| a在线观看视频| 久久精品亚洲一区| 69堂免费精品视频在线播放| 欧美一区二区福利| 国产精品久久久久久模特| 在线免费看黄色片| 亚洲国产欧美在线人成| 国产人妻精品一区二区三区| www国产精品com| 国产精品久久久久久久久免费高清| 免费在线成人av| 一区二区三区福利| 麻豆国产精品一区| 精品福利在线观看| 亚洲aⅴ乱码精品成人区| 性金发美女69hd大尺寸| 精品久久ai| 精品无码国模私拍视频| 成人国产亚洲欧美成人综合网 | 一区二区三区免费网站| 国产农村妇女毛片精品| 美日韩精品免费观看视频| 国产精品亚洲综合在线观看| 黄瓜视频免费观看在线观看www| 精品一区二区三区在线观看| 国产黄色小视频网站| 欧美一二区视频| 成人超碰在线| 黄色国产精品一区二区三区| 一二三区精品| 韩国女同性做爰三级| 精品视频1区2区| 在线视频国产区| 国产精品二区在线| 亚洲一区二区三区四区五区午夜| 内射中出日韩无国产剧情| 欧美视频裸体精品| 成年人在线观看| 91久久精品美女高潮| 午夜精品久久99蜜桃的功能介绍| 久久久久久久久久影视| 色综合久久中文字幕| 国产大学生校花援交在线播放| 91精品国产自产在线老师啪| 亚洲视频高清| 国产制服丝袜在线| 欧美日韩aaaaaa| 欧美videosex性极品hd| 免费观看成人高| 精品一区精品二区高清| 久草免费在线观看视频| 日韩精品视频在线| 欧美在线se| 免费 成 人 黄 色| 国产精品污污网站在线观看| 午夜免费福利视频| 青青草一区二区| 91精品国产自产在线观看永久∴| 国产情侣久久久久aⅴ免费| 色综合欧美在线| 中国av在线播放| 免费h精品视频在线播放| 狠狠狠色丁香婷婷综合激情 | 一级二级黄色片| 亚洲精品一区二区三区在线观看 | 精品国产一区二区三区四区精华 | 性娇小13――14欧美| 亚洲AV成人无码网站天堂久久| 亚洲成人av在线| 国产亚洲人成a在线v网站 | 手机成人在线| 99视频一区二区三区| 国产一区二区麻豆| 青青草99啪国产免费|