精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩一中文字幕| 国产精品福利一区二区| 91精品成人久久| 日韩精品人妻中文字幕有码| 免费a级毛片在线播放| 麻豆精品视频在线观看免费| 精品国产网站地址| 国产亚洲色婷婷久久| 福利在线导航136| 91网站在线观看视频| 国产aⅴ夜夜欢一区二区三区| 在线观看免费小视频| 精品三级在线| 一区二区三区久久| 免费看成人片| 在线免费观看av片| 欧美日韩三区| 在线观看国产成人av片| 亚洲欧美日韩色| 视频91a欧美| 色欧美片视频在线观看在线视频| 蜜桃视频成人在线观看| 你懂的在线网址| 国产成人免费视频精品含羞草妖精 | 国产精选久久久| 国产亚洲精品久久久久婷婷瑜伽| 久久综合国产精品台湾中文娱乐网| aa一级黄色片| 超碰cao国产精品一区二区| 精品视频123区在线观看| 亚洲 高清 成人 动漫| 在线中文字幕-区二区三区四区| 国产日韩欧美电影| 乱一区二区三区在线播放| 国产高清在线免费| 久久99国产精品免费网站| 日韩男女性生活视频| 日韩成人一区二区三区| 夜间精品视频| 色七七影院综合| 五月天综合视频| 神马电影久久| 亚洲国产欧美一区二区三区久久| 久久久久亚洲av无码麻豆| 久久99国产精品二区高清软件| 欧美午夜视频一区二区| 久久综合九色综合88i| 俄罗斯一级**毛片在线播放| 亚洲激情五月婷婷| 18视频在线观看娇喘| 麻豆视频在线| 成人欧美一区二区三区黑人麻豆| 日韩资源av在线| 日本在线视频1区| 91丨porny丨中文| 精品国产免费人成电影在线观...| 亚洲欧美激情另类| 床上的激情91.| 国产精品毛片va一区二区三区| www久久久久久| 国产成人精品一区二区三区四区| 99在线视频免费观看| 亚洲成人中文字幕在线| 粉嫩绯色av一区二区在线观看| 成人综合av网| 午夜小视频免费| 久久久久国产精品人| 欧美日韩一区二区三区在线视频| 欧美成熟毛茸茸| 久久久久久久综合色一本| 麻豆91av| 幼a在线观看| 亚洲日本丝袜连裤袜办公室| 无码人妻精品一区二区蜜桃网站| 超黄网站在线观看| 日韩欧美国产中文字幕| www.超碰com| 成人午夜888| 精品久久久三级丝袜| 国产成人精品无码片区在线| 伊人久久大香线蕉综合网站| 正在播放欧美一区| 国产福利视频网站| 亚洲人体大胆视频| 国产精品精品国产| www.久久伊人| 91社区在线播放| 欧美日韩免费观看一区| 一级毛片视频在线| 亚洲成人午夜电影| 国产又大又黄又粗又爽| 日韩视频1区| 精品小视频在线| 亚洲人与黑人屁股眼交| 精品99视频| 国产精品露脸av在线| www.97av.com| 国产日韩精品一区二区三区在线| 久久免费看毛片| 美女av在线免费看| 欧美精品久久一区| 人妻在线日韩免费视频| 成人精品亚洲| 97久久超碰福利国产精品…| 亚洲性生活大片| 99riav久久精品riav| 一区二区三区日韩视频| 国产日韩电影| 欧美电影免费提供在线观看| 长河落日免费高清观看| 日韩一级在线| 亚洲一区二区三区久久| 蜜桃视频在线免费| 亚洲成人一区二区在线观看| www.色就是色.com| 亚洲系列另类av| 欧美日韩国产va另类| 久久这里只有精品9| 成人午夜免费电影| 中文字幕在线亚洲精品 | 久久久久久久久久久久久久久久久久| 国内自拍欧美激情| 国产情侣自拍小视频| 国产精品对白刺激| 爱爱的免费视频| 自拍偷拍欧美| 国产精品久久久久99| 亚洲欧美激情在线观看| 自拍偷拍国产亚洲| 在线免费观看视频黄| 中国av一区| 午夜伦理精品一区| 亚洲精品国产精品国| 日韩美女精品在线| 国产亚洲视频一区| 久久福利综合| 国产精品都在这里| 国产亚洲依依| 色吊一区二区三区| 国产人妻一区二区| 香蕉视频成人在线观看| 国产欧美在线一区二区| 美女精品导航| 精品精品国产高清一毛片一天堂| 欧美日韩在线观看免费| 国产精品一区二区久久不卡| 一级全黄肉体裸体全过程| 人人玩人人添人人澡欧美| 自拍偷拍亚洲在线| 一本色道久久综合精品婷婷| 国产精品欧美综合在线| 午夜在线观看av| 欧美超碰在线| 成人性生交大片免费观看嘿嘿视频| 91官网在线| 欧美人xxxx| 欧美色图一区二区| 成人精品免费网站| 黄网站欧美内射| 日韩超碰人人爽人人做人人添| 午夜精品理论片| 亚州视频一区二区三区| 色综合久久综合网| 国产三级短视频| 另类调教123区| 黄色a级在线观看| 人人爱人人干婷婷丁香亚洲| 久久99青青精品免费观看| 亚洲精品综合久久| 日韩欧美精品在线观看| 成人片黄网站色大片免费毛片| 奇米精品一区二区三区在线观看一| 亚洲图片都市激情| 亚洲开心激情| 98精品国产自产在线观看| 免费成人av电影| 欧美一区二区三区在线| 九热这里只有精品| 久久精品综合网| 亚洲精品乱码久久久久久动漫| 欧美1区3d| 久久久久久精| 亚洲精品乱码日韩| 久久久久久久91| 搞黄视频在线观看| 日韩一卡二卡三卡国产欧美| 在线观看黄网站| 中文欧美字幕免费| 亚洲成人福利视频| 久久五月激情| 青青视频免费在线| 欧美激情在线精品一区二区三区| 国产久一一精品| av电影在线免费| 亚洲欧美日韩精品久久| 国产精品午夜福利| 日韩欧美精品中文字幕| 蜜桃av.com| 91在线你懂得| 视频区 图片区 小说区| 久久aⅴ乱码一区二区三区| 在线视频福利一区| 啪啪亚洲精品| 高清av免费一区中文字幕| 91在线成人| 51精品国产黑色丝袜高跟鞋| 成人影院www在线观看| 亚洲人免费视频| 丰满熟妇人妻中文字幕| 欧美日韩精品一区二区在线播放| 日本亚洲色大成网站www久久| 国产精品国产三级国产有无不卡 | 国产免费久久精品| 欧美人与性动交α欧美精品| 天堂va蜜桃一区二区三区漫画版| 黄色网在线视频| 国产高清久久| 欧美日韩在线精品一区二区三区| a级日韩大片| 91久久久国产精品| 精品成人免费一区二区在线播放| 高清欧美一区二区三区| 在线中文免费视频| 日韩在线播放av| av在线免费一区| 亚洲色图第三页| 视频三区在线观看| 亚洲成人av片在线观看| 国产黄色片网站| 制服丝袜国产精品| 一区二区三区播放| 欧美熟乱第一页| 国产日韩在线免费观看| 一本高清dvd不卡在线观看| 日韩精品视频免费看| 亚洲综合色噜噜狠狠| 色欲人妻综合网| 一色屋精品亚洲香蕉网站| 亚洲毛片亚洲毛片亚洲毛片| 国产日韩欧美高清在线| 欧美丰满美乳xxⅹ高潮www| 久久久精品国产免费观看同学| 中文字幕在线观看网址| 99国产精品一区| 亚洲蜜桃精久久久久久久久久久久| 成人午夜免费av| 中国特级黄色大片| 成人高清视频在线| 久久久久成人精品无码中文字幕| 成人精品一区二区三区中文字幕| 蜜臀视频在线观看| 成a人片国产精品| 一女三黑人理论片在线| 久久人人爽人人爽| 亚洲av成人无码久久精品| 欧美国产一区二区| 少妇高潮一区二区三区喷水| 成人欧美一区二区三区黑人麻豆| 午夜精品一区二区三区视频| 亚洲精品日韩专区silk| 欧美片一区二区| 亚洲成人免费视频| 亚洲第一精品在线观看 | 99精品久久久久久中文字幕| 欧美日韩精品欧美日韩精品一综合| 91精品国产综合久| 欧美一区二区观看视频| 少妇人妻精品一区二区三区| 日韩成人av在线| 国产福利电影在线| 久久视频国产精品免费视频在线 | 国产91精品久久久久久| 综合在线影院| 91免费欧美精品| 国产91精品入| 日本一区二区三区视频在线观看| 色爱综合网欧美| av一区二区三区免费观看| 夜夜精品视频| 久久久久久蜜桃一区二区| 国产乱色国产精品免费视频| 日韩少妇一区二区| 中文字幕的久久| 欧美成人国产精品高潮| 日韩欧美第一页| 精品久久国产视频| 亚洲色图综合网| 手机av免费在线| 国产精品h在线观看| 精品一区二区三区亚洲| 欧美精品一区二区三区在线看午夜 | 91精品一区二区三区蜜桃 | 波多野结衣家庭主妇| 91精品国产一区二区| 欧美日韩在线中文字幕| 久久躁狠狠躁夜夜爽| 345成人影院| 7777精品久久久大香线蕉小说| 免费成人结看片| 日韩亚洲欧美一区二区| 日韩av电影天堂| 日本少妇xxxx| 亚洲女女做受ⅹxx高潮| 日韩精品一区不卡| 精品日韩在线一区| 在线免费观看黄色网址| 欧日韩在线观看| 91麻豆精品激情在线观看最新 | 日本性生活一级片| 中文字幕免费一区| 国产成人精品片| 日韩美女一区二区三区四区| av国产在线观看| 欧美怡春院一区二区三区| 999在线精品| 三级网在线观看| 久久国产免费| 美女黄色一级视频| 亚洲精品一卡二卡| 亚洲影视一区二区| 一区二区三区美女xx视频| 国产一二三在线| 国产精品久久久久免费| 欧美1区2区3区| 男女视频在线观看网站| 国产精品久久久久久亚洲毛片| 男人天堂2024| 亚洲免费av电影| av不卡高清| 国产99视频精品免费视频36| 亚洲视频电影在线| 特级黄色片视频| 亚洲人精品一区| 91 中文字幕| 日韩中文字幕网| 久久免费影院| 亚洲欧美日韩精品久久久 | 午夜精品久久久久久久久久久 | 日韩精品免费一线在线观看| 久久国产精品黑丝| 国产精品久久久久久久久久直播| 欧美二区视频| 少妇高潮一69aⅹ| 一区二区三区在线不卡| 99在线小视频| 欧美大片在线看免费观看| 韩国三级大全久久网站| 无码人妻aⅴ一区二区三区日本| 麻豆成人av在线| 91视频青青草| 欧美va天堂va视频va在线| 手机在线免费看av| 国产精品国产三级国产专区53| 亚洲国产免费看| 精品夜夜澡人妻无码av | 农村妇女精品一二区| 91美女福利视频| 亚洲av无码不卡| 色噜噜狠狠狠综合曰曰曰88av| 精品久久毛片| 99热这里只有精品免费| 成人福利视频网站| 在线观看免费av片| 在线免费观看羞羞视频一区二区| 成人在线高清| av影院在线播放| 99久久久国产精品免费蜜臀| 亚洲不卡在线视频| 色悠悠久久88| 98视频精品全部国产| 成人av一级片| 亚洲欧美综合另类在线卡通| 精品国产99久久久久久宅男i| 久久久久久久网站| 九九综合久久| 三级黄色片免费看| 欧美日韩一区二区三区在线免费观看| 成人精品一区二区| 91久久在线观看| 国产一区二区三区久久久久久久久| av女人的天堂| 日韩视频一区二区在线观看| 免费h视频在线观看| 一区二区三区四区| 不卡的av网站| 在线视频1卡二卡三卡| 久久久久国产精品一区| 精品日韩一区| 亚洲啪av永久无码精品放毛片| 91国产精品成人| 欧美黑人猛交的在线视频| 欧美不卡三区| 国产剧情一区二区| 国产情侣免费视频| 97在线视频免费| 天天射—综合中文网| 欧洲女同同性吃奶| 欧美电影免费提供在线观看| 美女色狠狠久久| 欧美精品99久久|