在<<基于tabBar类似mail多选删除的纠结实现>> 的例子中,有一处代码添加Btn的地方:

 
  
  1. UIButton *myBtn1 = [UIButton buttonWithType:UIBarButtonItemStylePlain]; 
  2. selectBtn = myBtn1; 
  3. myBtn1.frame = CGRectMake(0.0f, 0.0f, 80.0f, 30.0f); 
  4. [myBtn1 setTitle:@"删除(0)" forState:UIControlStateNormal]; 
  5. [myBtn1 setTag:1]; 
  6. [myBtn1 setBackgroundImage:[UIImage p_w_picpathNamed:@"bbg.png"] forState:UIControlStateNormal]; 
  7. [myBtn1 addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
  8. 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;