iOS 11的适配之UIBarButtonItem

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

  • 滑动视图的安全距离问题
  • tableView区头和区尾只实现高度返回方法不顶用,必须同时实现返回view的方法(或者设置表的的预估高度为某一个数值)
  • UIBarButtonItem 通过 - (void)setTitleTextAttributes:(nullable NSDictionary *)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 *)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的适配之UIBarButtonItem)