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;
}
}
网友评论