我在AppDelegate.m上有这个:
// Change the appearance of back button
UIImage *backButtonImage = [[UIImage imageNamed:@"back"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 20, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setFont:[UIFont fontWithName:@"Raleway-ExtraLight" size:18]];
构建成功但是当它在我的iPod上运行时,它在调试控制台上给我这个错误消息:
2013-09-10 16:42:19.581 PushTransition[3599:907] -[_UIBarItemAppearance setFont:]: unrecognized selector sent to instance 0x1cda7100
2013-09-10 16:42:19.586 PushTransition[3599:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_UIBarItemAppearance setFont:]: unrecognized selector sent to instance 0x1cda7100'
*** First throw call stack:
(0x333602a3 0x3b04497f 0x33363e07 0x33362531 0x332b9f68 0x4ff27 0x351c8ad9 0x351c8663 0x351c084b 0x35168c39 0x351686cd 0x3516811b 0x36e6f5a3 0x36e6f1d3 0x33335173 0x33335117 0x33333f99 0x332a6ebd 0x332a6d49 0x351bf485 0x351bc301 0x4fced 0x3b47bb20)
libc++abi.dylib: terminate called throwing an exception
(lldb)
我认为这是由这行代码引起的:
[[UIBarButtonItem appearance] setFont:[UIFont fontWithName:@"Raleway-ExtraLight" size:18]];
因为当我评论该行时,它运行完美而没有错误。但导航栏按钮的字体是默认字体。如何定制?
谢谢
答案 0 :(得分:6)
你有没有试过像:
[[UIBarButtonItem appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"AmericanTypewriter" size:20.0],
UITextAttributeFont,
nil]
forState:UIControlStateNormal];
这也允许您编辑其他属性,如阴影等。 From this great tutorial
答案 1 :(得分:1)
试试这个
可用UITextAttributes(只需将它们添加到NSDictionary):
UITextAttributeFont: Change font with a UIFont
UITextAttributeTextColor: Change color with a UIColor
UITextAttributeShadowColor: Change shadow color with a UIColor
UITextAttributeShadowOffset: Change shadow offset with a UIOffset
[[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIFont fontWithName:@"Raleway-ExtraLight" size:18.0], UITextAttributeFont,nil] forState:UIControlStateNormal];
答案 2 :(得分:0)
来自Apple Docs:
字体
标题的字体。
(在iOS 3.0中不推荐使用。相反,请设置UILabel对象的字体 分配给textLabel和detailTextLabel属性。)
@property(nonatomic,retain)UIFont * font
这样做会有所帮助:
[buttonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIFont fontWithName:@"Helvetica-Bold" size:26.0], UITextAttributeFont,nil] forState:UIControlStateNormal];