1.解決TabBarButton圖片渲染
兩種方法:
1.直接選中全部圖片,修改一個屬性:Render as ? ?選擇:Original Image

2.抽取UIImage分類,提供不要渲染的方法
為什么要封裝到分類 ? ? ?提高方法的復用性
3.修改插件 ? 目的:讓自己添加圖片的方法,也有插件的提示效果
3.1如何找到插件的安裝位置
分析:插件是安裝在電腦的上的,安裝到哪里,插件的方法里面一定會提供
找到插件的源代碼,進入源代碼搜索 ? ? 搜索什么關(guān)鍵字呢? ? 在哪搜索?
command+f 搜索? ? 不可以 ?只能在當前類中搜索
全局搜索點放大鏡圖標搜索和路徑相關(guān)的關(guān)鍵字,一個一個試一下(path,file) ? ?試過之后發(fā)現(xiàn) install_path能找到安裝路徑

之后發(fā)現(xiàn)LIBRARY(library)這個文件找不到? ? ? ? 其實這個文件就是資源庫
在這之前要先了解為什么我們電腦的目錄(文件夾名字)有的是中文,有的是英文??
首先要先設置自己的電腦隱藏的文件可見, ? 然后發(fā)現(xiàn)中文的文件夾下都有一個本地化文件

本地化文件:會根據(jù)電腦設置的語言,把文件夾名稱翻譯成對應的語言
我們把資源庫中的這個文件刪除就發(fā)現(xiàn)資源庫名稱變成了library了
2.解決TabBarButton標題渲染
看到標題被渲染成藍色,我們這要想到這是TabBar的主題顏色(默認是藍色)tintColor
那么我們就要設置標題的屬性
按鈕標題 => 按鈕內(nèi)容 => 對應子控制器的tabBarItem
怎么設置按鈕標題顏色? ? ? 一次只能設置一個
通過tabBarItem:模型可以設置那么通過哪個屬性修改呢?
我們可以進tabBarItem頭文件去找,但是找不到 ? ? ?那么我們就去tabBarItem它的父類去找, 找到一個方法
- (void)setTitleTextAttributes:(nullable NSDictionary *)attributes forState:(UIControlState)state NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
Attributes富文本:可以設置文字顏色,字體,陰影,圖文混排
描述文本屬性,通過key,和value去設置文字屬性
NSMutableDictionary*attr = [NSMutableDictionarydictionary];
attr[NSForegroundColorAttributeName] = [UIColorblackColor];
[itemsetTitleTextAttributes:attrforState:UIControlStateSelected];
怎么拿到所有的TabBarButton?
拿不到TabBarButton,我們只能拿到TabBarItem ,并且知道修改TabBarItem能達到修改TabBarButton的目的(MVC思想)
但是修改TabBarItem一次只能修改一個,如何一次性修改所有的TabBarItem?
可以通過+ (instancetype)appearance;這個類方法拿到所有的TabBarItem
// 獲取所有UITabBarItem
UITabBarItem*item = [UITabBarItemappearance];
注意:通過選中狀態(tài)設置文字字體是不行的,沒有效果
NSMutableDictionary*attr = [NSMutableDictionarydictionary];
字典的key值怎么傳?? ??——> 看這個方法的描述——>using the keys found in NSAttributedString.h.
——>去這個類中找到隊形的key ? ? ? UIkit—>NSAttributedString.h
attr[NSFontAttributeName] = [UIFontsystemFontOfSize:13];
[itemsetTitleTextAttributes:attrforState:UIControlStateNormal];
只有通過Normal狀態(tài)下設置才行
attr[NSForegroundColorAttributeName] = [UIColorblackColor];
[itemsetTitleTextAttributes:attrforState:UIControlStateSelected];
只有在顯示之前設置才會生效一般我們把這些設置寫在+(void)load ?方法里面 ? 這個方法只會加載一遍
// 什么時候調(diào)用:第一次加載類的時候調(diào)用
// 只會調(diào)用一次
+ (void)load ?{ ?}
// 什么時候調(diào)用:第一次使用類或者它的子類的時候調(diào)用
// 有可能會調(diào)用多次
+ (void)initialize { ?}
注意點:
1.任何對象都能使用appearance嗎?
不是 ? 只有遵守UIAppearance協(xié)議 (或父類遵守) ?才能使用appearance
2.任何屬性都可以使用appearance設置嗎?
不能
3.哪些屬性可以通過appearance設置? ? ?——>去看看屬性的區(qū)別
只有帶有UI_APPEARANCE_SELECTOR宏屬性,才能去設置

4.如果使用appearance設置屬性,必須要在顯示之前去設置.
5.使用appearance設置某些屬性,那這些屬性在整個工程中都生效
3.修改TabBarButton的位置


發(fā)現(xiàn)TabBar中間位置設置了圖片不顯示———>原因是圖片被渲染———>為什么正常狀態(tài)下圖片會被渲染———>圖片太大(圖片超出了TabBar的范圍)
圖片位置怎么修改———>修改frame———>此方法不可行———>那么還有那些方法可以修改圖片的位置呢??
修改圖片的內(nèi)間距 ? ?可以辦到 ? ? ?那么這個屬性名字是什么?? ?———>去頭文件找——> 找不到就去父類找
我們找到imageInsetsz這個屬性可以修改
vc2.tabBarItem.imageInsets=UIEdgeInsetsMake(7,0, -7,0);
注意:有些時候我們找到了能用的屬性,但是我們通過一個對象卻無法調(diào)用這個屬性
原因:調(diào)用對象不對. ? ?我們進頭文件去找到的屬性可能是其他類的屬性 ? 我們要用對應的類對象去調(diào)用這個屬性
怎么找到真正能調(diào)用屬性的類對象?? ? ? ? 一直往上找,找到interface ? interface后面的就是這個對象