设置导航栏按钮时遇到的问题

一点小小的疑惑 ,一直在纠结这个bug,

设置工程中所有BarButtonItem主题样式

 + (void)initialize {

    // 设置整个项目所有的 BarButtonItem 的主题样式
    UIBarButtonItem *item = [UIBarButtonItem appearance];
    // 设置 item 普通状态
   
    NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary];
    textAttrs[NSForegroundColorAttributeName] = [UIColor orangeColor]; // 前景颜色
    textAttrs[NSFontAttributeName] =[UIFont systemFontOfSize:15];
    [item setTitleTextAttributes:textAttrs forState:UIControlStateNormal];
    
    // 设置 item 不可用状态 (灰色 禁止与用户进行交互)
    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];
}

但是实际运行中出现了这样的bug
普通的push出的控制器 遵循主题样式(左侧按钮enable = YES 右侧为NO)


此时左右两边都是符合设定需求的状态.png

但modal出的导航栏左右两侧都为默认的normal样式 ,"发送"这个按钮现在显示为橙色,但是确定是不可用状态。


此时导航条右边的按钮是disabled状态.png

我曾经想过是不是因为modal出的界面是不是不受上面initialize方法的约束,但瞬间又被我自己推翻了,因为左边的"取消"按钮分明就是被渲染过的橘黄色。

经过几次测试验证,所有modal出的控制器都有这个毛病,肉眼看上去是可用状态,但是就是不显示 UIControlStateDisabled 状态时应有的灰色样式。

尝试了设置按钮disabled 属性之类的方法,不好使
最后用了一个笨方法解决的

// textAttrs[NSForegroundColorAttributeName] = [UIColor orangeColor]; // 前景颜色

注释掉这一句 ,按钮的普通状态title颜色变成了系统默认的蓝色。在监听到按钮由不可用 -> 可用时 再通过修改title颜色来达到需要的效果

self.navigationItem.rightBarButtonItem.enabled = YES;
self.navigationItem.rightBarButtonItem.tintColor = [UIColor orangeColor];

感觉很蠢... ... 但是因为当前项目中modal出来的界面并不多,这样的代码页就写个一两次,好歹是达到效果了,虽然真的很蠢,但勉强能用... ...
先凑合用吧……

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,877评论 25赞 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 17,090评论 4赞 61
  • 自2002年韩日世界杯以来,中国足球发展形势急转直下,联赛假赌黑现象挥之不去,青训场地梯队人才极其匮乏,各...
    伊菡聊球阅读 363评论 0赞 1
  • 废话不多说,直接上图。 不过这样的设计,感觉好像化学课上的分子式... 作为一款试验性的产品,试图让平面性思维脑图...
    李福东阅读 918评论 9赞 0
  • 一部让你不敢吃肉的电影! 2016-06-22 松子 松子电影 话说又到了夏天露肉的季节,满街都是白花花的大腿,只...
    啊啊啊啊啊啊啊吧阅读 1,281评论 0赞 0

友情链接更多精彩内容