美文网首页
关于iOS 11的适配,我还想说一下UIBarButtonIte

关于iOS 11的适配,我还想说一下UIBarButtonIte

作者: 雨天多久就 | 来源:发表于2017-09-23 11:59 被阅读1008次

    iOS 11 和新版的iphone出来后,就轮到我们开发者忙活了,下载了Xcode9后,运行新的模拟器,主要发现三个问题。

    • 滑动视图的安全距离问题
    • tableView区头和区尾只实现高度返回方法不顶用,必须同时实现返回view的方法(或者设置表的的预估高度为某一个数值)
    • UIBarButtonItem 通过 - (void)setTitleTextAttributes:(nullable NSDictionary<NSAttributedStringKey,id> *)attributes forState:(UIControlState)state设置字体大小和颜色不起作用问题

    前两个问题很多博客和文章里都有详细讲解,第三个目前我还没有发现别人提出来,自己试了半天也不管用

    我项目里的UIBarButtonItem是这样创建的
    UIBarButtonItem * barItem = [[UIBarButtonItem alloc] initWithTitle:@"发表" style:UIBarButtonItemStylePlain target:self action:@selector(publishTheTopic)];
    [barItem setTitleTextAttributes:@{NSFontAttributeName:Font_num(16),NSForegroundColorAttributeName:MAIN_TEXTCOLOR} forState:UIControlStateNormal];
    barItem.enabled = NO;
    self.navigationItem.rightBarButtonItem = barItem;
    
    11系统之前,使用

    - (void)setTitleTextAttributes:(nullable NSDictionary<NSAttributedStringKey,id> *)attributes forState:(UIControlState)state NS_AVAILABLE_IOS(5_0)

    可以对barItem进行字体大小和颜色设置,但是在11系统上,这个方法不管用了。
    从控制台输出,发现baritem的颜色和大小也是设置的大小和颜色,但是就是显示上不一样,也不知道什么原因
    test.png
    目前我也不知道如何解决,只能通过另外一种创建方式来解决。
    UIButton    * customBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 60, 60, 44)];
    [customBtn setTitle:@"发表" forState:UIControlStateNormal];
    [customBtn setTitleColor:MAIN_TEXTCOLOR forState:UIControlStateNormal];
    customBtn.enabled = NO;
    [customBtn addTarget:self action:@selector(publishTheTopic) forControlEvents:UIControlEventTouchUpInside]; 
    
    UIBarButtonItem * barItem = [[UIBarButtonItem alloc] initWithCustomView:customBtn];
    self.navigationItem.rightBarButtonItem = barItem;
    
    这样可以通过直接修改customView的字体和颜色来实现目的
    - (void)changeTheRightBarItemType:(BOOL)isCan {
        if (isCan) {
            UIButton   *customBtn = (UIButton *)self.navigationItem.rightBarButtonItem.customView;
            [customBtn setTitleColor:MAIN_COLOR forState:UIControlStateNormal];
            customBtn.enabled = YES;
        }
        else {
            UIButton   *customBtn = (UIButton *)self.navigationItem.rightBarButtonItem.customView;
            [customBtn setTitleColor:MAIN_TEXTCOLOR forState:UIControlStateNormal];
            customBtn.enabled = NO;
        }
    }
    

    另外我有个疑问,上面说的这些问题,只在新版iOS模拟器上才发现有,自己的手机升级系统后,app并没有出现这三个问题,这是个什么情况?

    相关文章

      网友评论

          本文标题:关于iOS 11的适配,我还想说一下UIBarButtonIte

          本文链接:https://www.haomeiwen.com/subject/fiqcextx.html