2012-10-11 50 views
1

我已定制的UIBarButtonItem这样的标题:如何自定义定制的UIBarButtonItem

UIButton *loginBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
loginBtn.frame = CGRectMake(0, 0, 46.0, 34.0); 
[loginBtn setImage:[UIImage imageNamed:@"loginBtn.png"] forState:UIControlStateNormal]; 
[loginBtn addTarget:self action:@selector(loginPressed:) forControlEvents:UIControlEventTouchUpInside]; 
[loginBtn setTitle:@"Login" forState:UIControlStateNormal]; 

UIBarButtonItem *finishedButton = [[UIBarButtonItem alloc] initWithCustomView:loginBtn]; 

[finishedButton setStyle:UIBarButtonItemStylePlain]; 
self.navigationItem.rightBarButtonItem = finishedButton; 

但现在我不能看到标题为“登陆”,它是空白的按钮,似乎“setTitle:”不起作用。 有人能告诉我为什么?谢谢!

回答

0

setTitle:did工作,你只是没有仔细阅读文档。使用setBackgroundImage:而不是setImage:,因为后者会覆盖setTitle:,但前者不会(这就是您想要的)。因此,而不是

[loginBtn setImage:[UIImage imageNamed:@"loginBtn.png"] forState:UIControlStateNormal]; 

[loginBtn setBackgroundImage:[UIImage imageNamed:@"loginBtn.png"] forState:UIControlStateNormal]; 
      ^
      +- background! 

的,你应该罚款去。

+0

它的工作原理!现在标题出现了。非常感谢!但是按钮上的字体太大了,我可以设置字体吗? –

+0

@ trey.lin不客气。顺便说一下,你应该接受帮助的答案。是的,你可以设置字体:尝试'loginBtn.titleLabel.font = [UIFont boldSystemFontOfSize:10];'或类似的。 – 2012-10-11 06:55:55