一點小小的疑惑 睛廊,一直在糾結這個bug,
設置工程中所有BarButtonItem主題樣式
+ (void)initialize {
// 設置整個項目所有的 BarButtonItem 的主題樣式
UIBarButtonItem *item = [UIBarButtonItem appearance];
// 設置 item 普通狀態(tài)
NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary];
textAttrs[NSForegroundColorAttributeName] = [UIColor orangeColor]; // 前景顏色
textAttrs[NSFontAttributeName] =[UIFont systemFontOfSize:15];
[item setTitleTextAttributes:textAttrs forState:UIControlStateNormal];
// 設置 item 不可用狀態(tài) (灰色 禁止與用戶進行交互)
NSMutableDictionary *disableTextAttrs = [NSMutableDictionary dictionary];
disableTextAttrs[NSForegroundColorAttributeName] = [UIColor colorWithRed:180/255.0 green:180/255.0 blue:180/255.0 alpha:0.7];
disableTextAttrs[NSFontAttributeName] =[UIFont systemFontOfSize:15];
[item setTitleTextAttributes:disableTextAttrs forState:UIControlStateDisabled];
}
但是實際運行中出現(xiàn)了這樣的bug
普通的push出的控制器 遵循主題樣式(左側按鈕enable = YES 右側為NO)
此時左右兩邊都是符合設定需求的狀態(tài).png
但modal出的導航欄左右兩側都為默認的normal樣式 抡砂,"發(fā)送"這個按鈕現(xiàn)在顯示為橙色,但是確定是不可用狀態(tài)恬涧。
此時導航條右邊的按鈕是disabled狀態(tài).png
我曾經(jīng)想過是不是因為modal出的界面是不是不受上面initialize方法的約束注益,但瞬間又被我自己推翻了,因為左邊的"取消"按鈕分明就是被渲染過的橘黃色溯捆。
經(jīng)過幾次測試驗證丑搔,所有modal出的控制器都有這個毛病,肉眼看上去是可用狀態(tài)提揍,但是就是不顯示 UIControlStateDisabled 狀態(tài)時應有的灰色樣式啤月。
嘗試了設置按鈕disabled 屬性之類的方法,不好使
最后用了一個笨方法解決的
// textAttrs[NSForegroundColorAttributeName] = [UIColor orangeColor]; // 前景顏色
注釋掉這一句 劳跃,按鈕的普通狀態(tài)title顏色變成了系統(tǒng)默認的藍色谎仲。在監(jiān)聽到按鈕由不可用 -> 可用時 再通過修改title顏色來達到需要的效果
self.navigationItem.rightBarButtonItem.enabled = YES;
self.navigationItem.rightBarButtonItem.tintColor = [UIColor orangeColor];
感覺很蠢... ... 但是因為當前項目中modal出來的界面并不多,這樣的代碼頁就寫個一兩次刨仑,好歹是達到效果了郑诺,雖然真的很蠢,但勉強能用... ...
先湊合用吧……