在<<基于tabBar类似mail多选删除的纠结实现>> 的例子中,有一处代码添加Btn的地方:
- UIButton *myBtn1 = [UIButton buttonWithType:UIBarButtonItemStylePlain];
- selectBtn = myBtn1;
- myBtn1.frame = CGRectMake(0.0f, 0.0f, 80.0f, 30.0f);
- [myBtn1 setTitle:@"删除(0)" forState:UIControlStateNormal];
- [myBtn1 setTag:1];
- [myBtn1 setBackgroundImage:[UIImage p_w_picpathNamed:@"bbg.png"] forState:UIControlStateNormal];
- [myBtn1 addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
- deleteBtn =[[UIBarButtonItem alloc] initWithCustomView:myBtn1];
这个地方添加Button的时候用了[myBtn1 setTitle:@"删除(0)" forState:UIControlStateNormal],我为什么这么写呢?因为当时我发现如果我不先添加一下"(0)"的占位符,后面选择了要删除的项以后,比如Button标题改成了"删除(2)"的时候,会显示不全,所以我就相当然的认为Button的字的宽度一旦设置就是固定的,还自作聪明的使用了占位符.
今天又再次遇到了这样的问题,仔细研究了一下这个问题,发现我后面再设置文字的时候竟然用selectBtn.titleLabel.text = [NSString stringWithFormat:@"删除(%d)",[deleteDic count]].直接修改的文字,其实使用[selectBtn setTitle:[NSString stringWithFormat:@"删除(%d)",[deleteDic count]] forState:UIControlStateNormal]就好了,就不存在占位的问题了.
延伸一下,后来发现,如果字太长了的话,可以要求Button自动调整字体的大小的.
实现代码很简单了,就一句:
selectBtn.titleLabel.adjustsFontSizeToFitWidth = YES;
转载于:https://blog.51cto.com/rainbird/658482