UIAppearanceContainer 利器
2019獨角獸企業重金招聘Python工程師標準>>>
這是一個很重要的protocol,而且它的代理類是UIView和UIBarItem等,UIView和UIBarItem是比較偏底層的父類,很多常用的UI系控件都繼承了它們中某一個,如UIButton、UILabel、UINavigationBar、UIBarButtonItem。(網上相關資料也不多) 因為這個有個很吸引人的是實例方法
/** 自定義一個類的所有實例的外觀,外觀修改相關信息發送到外觀的代理類。注意iOS7:UIView iOS7 tintColor屬性已經,現在有特殊遺傳行為UIView.h中描述。這種繼承的行為可以用外表代理沖突,因此tintColor現在不允許出現代理。 **/ + (instancetype)appearance;現在來說說使用它的好處了 ####優點1:可以少碼很多代碼,節省開發時間,規范代碼。 我們在創建一個類的時候會寫很多相同的屬性設置代碼。比如一個UILabel的BackgroundColor設置,這個對設計師來說,他們一般都是設計背景色透明的,不同的iOS版本它的默認背景色有區別( iOS6默認是白色)的,一般我們在寫的時候會加上一句代碼 設置背景為透明。如果有N個控件 那我們可能要加近N出地方。
? ? [[UILabel appearance] setBackgroundColor:[UIColor clearColor]];使用這么一句代碼就能搞定
####優點2:在滿足需求時,盡可能少的使用自定義控件,性能也會相對好一點 不同的app會有不同的風格,如UINavigationBar、UITabBar等的樣式變化,UINavigationBar可能網上講的方法比較多,這邊就拿UITabBar來說一下吧。比如最近開發中遇到的一件事 設計看到Instagram app的底部TabBar是只有顯示圖片,并且高度只有44px,這與我們正常認知TabBar高度是49px有差異,第一直覺告訴我們Instagram底部狀態欄是自定義實現的!但經常使用appearance,第二反應我是否可以通過它來實現。經過實踐用一段簡單的代碼就完成了。
[[UITabBar appearance] setFrame:CGRectMake(0, SCREEN_HEIGHT-44, SCREEN_WIDTH, 44)]; //如果圖片的位置需要調整 可使用下面的代碼 具體位置可通過調值改變[[UITabBarItem appearance] setImageInsets:UIEdgeInsetsMake(5, 0, -5, 0)];看完這個后,是不是覺得換UITabBar可以很方便,很簡單。而且用系統的實現方式心里也有底,性能也比自定義實現的好多了。
####優點3:代碼易管理,易迭代,在設計風格出現變動的時候可以快速的響應 因為你對整個app風格可以在一處地方可以實現,想要改動的時候自然輕松的多。如TableView的背景色設置,cell的按下狀態顏色設置等等
? ? [[UITableView appearance] setBackgroundColor:[UIColor whiteColor]];UIView *cellSelectedBgView = [UIView new];cellSelectedBgView.backgroundColor = [UIColor yellowColor];[[UITableViewCell appearance] setSelectedBackgroundView:cellSelectedBgView];轉載于:https://my.oschina.net/u/1391235/blog/742323
總結
以上是生活随笔為你收集整理的UIAppearanceContainer 利器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ATM小程序
- 下一篇: Redis适用于高并发的递增、递减功能