Ios5 UIx27;s setTitleTextAttributes会导致故事板中的UINavigationBar标题集在iOS 6中显示为省略标题,但在iOS 5中不显示

Ios5 UIx27;s setTitleTextAttributes会导致故事板中的UINavigationBar标题集在iOS 6中显示为省略标题,但在iOS 5中不显示,ios5,uinavigationbar,ios6,uifont,uiappearance,Ios5,Uinavigationbar,Ios6,Uifont,Uiappearance,我一直在使用我认为是相当标准的iOS 5代码(这是一种堆栈溢出代码),以便使用自定义字体显示我的UINavigationBar标题。] 但我发现,当我为iOS5构建的应用程序(可以在iOS5和iOS6设备上运行)在iOS6模拟器上运行时,它会省去我的标题 以下是在iOS 5.1模拟器上运行的相同代码 为清楚起见,以下是在我尝试在iOS 6上运行之前一直有效的相关代码 #define COURIER_FONT_BOLD @"CourierNewPS-BoldMT" - (UIFont*)na

我一直在使用我认为是相当标准的iOS 5代码(这是一种堆栈溢出代码),以便使用自定义字体显示我的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];
    }

我发现了两种解决上述问题的方法:

  • 将标题文本设置为中不同大小的内容 .storyboard(在我的例子中,我输入了“…”,然后在
    viewDidLoad
    中, 调用self.navigationItem.title=@“网格”

  • 在viewDidLoad中,执行
    [self.navigationController.navigationBar
    setNeedsLayout]

  • 我更喜欢后者,因为这感觉不像是一个混乱。我猜第一个解决方案会迫使第二个发生


    我不知道为什么iOS 5和iOS 6之间的这种行为不同,但这允许它在两种情况下都工作。

    我发现了两种解决上述问题的方法:

  • 将标题文本设置为中不同大小的内容 .storyboard(在我的例子中,我输入了“…”,然后在
    viewDidLoad
    中, 调用self.navigationItem.title=@“网格”

  • 在viewDidLoad中,执行
    [self.navigationController.navigationBar
    setNeedsLayout]

  • 我更喜欢后者,因为这感觉不像是一个混乱。我猜第一个解决方案会迫使第二个发生

    我不知道为什么iOS 5和iOS 6之间的行为不同,但这允许它在两种情况下都工作