Ios UINavigationBar标题在更改ViewController时被剪裁

Ios UINavigationBar标题在更改ViewController时被剪裁,ios,uinavigationbar,Ios,Uinavigationbar,当我从iOS应用程序的开始屏幕(我按下设置屏幕)按下新的tableViewController时,UINavigationController中的标题将被剪裁,直到动画完成: 这是动画中间的导航栏,在动画完成之前,它看起来如下所示: 片刻之后,标题正确地更改为“设置”。这没什么大不了的,但你可以想象一下,这对一个有点强迫症倾向的程序员来说有多麻烦!:) 以下是我在tableViewController中设置标题的代码,没有什么特别之处: - (id)initWithStyle:(UITabl

当我从iOS应用程序的开始屏幕(我按下设置屏幕)按下新的tableViewController时,UINavigationController中的标题将被剪裁,直到动画完成:

这是动画中间的导航栏,在动画完成之前,它看起来如下所示:

片刻之后,标题正确地更改为“设置”。这没什么大不了的,但你可以想象一下,这对一个有点强迫症倾向的程序员来说有多麻烦!:)

以下是我在tableViewController中设置标题的代码,没有什么特别之处:

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        self.title = @"Settings";
        // Hide tabBar when pushed so you cannot switch from the Settings
        self.hidesBottomBarWhenPushed = YES;
        self.tableView.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"bg.png"]];
    }
    return self;
}
尝试设置

self.navigationItem.title = self.title;
在视图中将出现方法

尝试

- (void)viewWillAppear:(BOOL)animated {

    self.title = @"Settings";
}

我回答得有点晚,但我在iOS 5上找到了这个问题。。在UINavigationBar上使用UIAppearance代理时,似乎需要显式设置字体大小,而不是使用0.0根据方向自动设置字体大小

我可以通过将UINavigationController子类化并输入以下代码来修复此问题:

- (void)viewWillLayoutSubviews {
    [super viewWillLayoutSubviews];

    // You should include a conditional here to check for iOS 5, so iOS 6 doesn't have to do any additional work
    self.navigationBar.titleTextAttributes = @{
        UITextAttributeFont:[UIFont boldSystemFontOfSize:UIInterfaceOrientationIsPortrait(self.interfaceOrientation) || IS_IPAD ? 20.0f : 16.0f],
        UITextAttributeTextColor:[UIColor whiteColor],
        UITextAttributeTextShadowColor:[UIColor colorWithWhite:0.0f alpha:0.5f],
        UITextAttributeTextShadowOffset:[NSValue valueWithUIOffset:UIOffsetMake(0.0f, -1.0f)]
    };
}

我也有这个恼人的问题。在我的例子中,我使用自定义字体作为导航标题,并使用setTitleTextAttributes:forState:进行设置,如果我不更改它,则不会发生这种情况。此外,这个“问题”似乎在iOS6中得到了解决。我很想找到一个解决办法,这就是为什么我开始悬赏来引起一些注意……你能把bg.png放在dropbox或类似的东西上吗?你有没有对以下任何东西进行子分类:
UINavigationBar
UINavigationItem
UINavigationController
?是的,这个问题在iOS 6中已经解决。答案同样适用于iOS 5,至少在我的情况下是这样。我没有子类化任何东西,我只是使用UIAppearance全局更改UINavigationBars的外观。顺便说一句,“如果重写此方法,则必须在实现中的某个点调用super。”是的,将字体大小设置为硬编码值修复了问题。这是以前的代码:
[[UINavigationBar外观]setTitleTextAttributes:[NSDictionary Dictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@“Akzidenz Grotesk BQ”大小:0.0],UITextAttributeFont,nil]
我刚刚将字体大小更改为固定值:
[[UINavigationBar外观]setTitleTextAttributes:[NSDictionary Dictionary DictionaryWithObjects和Keys:[UIFontWithName:@“Akzidenz Grotesk BQ”大小:22.0],UITextAttributeFont,nil]现在起作用了。谢谢