我一直在使用我认为是一些相当标准的iOS 5代码(并且在stackoverflow上是7x accepted answer),以便让我的UINavigationBar标题显示为自定义字体。]
但是我发现当我为iOS5构建的应用程序(以便它可以在iOS5和iOS6设备上运行)在iOS6模拟器上运行时,它会使我的标题变得非常简单。
以下是在iOS 5.1模拟器上运行的相同代码。
为清楚起见,以下是在我尝试在iOS 6上运行之前一直有效的相关代码。
#define COURIER_FONT_BOLD @"CourierNewPS-BoldMT"
- (UIFont*)navigationBarTitleFontPortrait
{
if (!_navigationBarTitleFontPortrait)
_navigationBarTitleFontPortrait = [UIFont fontWithName:COURIER_FONT_BOLD size:24.0];
return _navigationBarTitleFontPortrait;
}
// …
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)])
{
NSDictionary* attrs = [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor lightGrayColor],
UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(1, 0)],
UITextAttributeTextShadowOffset,
navigationBarTitleFontPortrait,
UITextAttributeFont,
nil];
[[UINavigationBar appearance] setTitleTextAttributes:attrs];
}
答案 0 :(得分:3)
我发现了上述问题的两种解决方案:
将标题文本设置为不同大小的文本
.storyboard(在我的情况下,我输入" ...",然后在viewDidLoad
,
致电self.navigationItem.title = @"the GRID"
;
,执行[self.navigationController.navigationBar
setNeedsLayout]
。
我更喜欢后者,因为它感觉不像是一个kludge。无论如何,我猜第一个解决方案迫使第二个解决方案发生。
不知道为什么iOS 5和iOS 6之间的这种行为有所不同,但这可以让它在两者中都有效。