UINavigationBar 标题文本部分显示在屏幕上

Posted

技术标签:

【中文标题】UINavigationBar 标题文本部分显示在屏幕上【英文标题】:UINavigationBar title text partially appears on screen 【发布时间】:2015-04-24 03:40:49 【问题描述】:

我正在以编程方式创建UINavigationBar,它在 ios 7 中按预期显示。但是,在 iOS 8.x 中,UINavigationBar 中的所有文本都不会出现在屏幕范围内。我的一个假设是这与自动布局有关。

//ViewControllerRootHomeCenter.m
_navBar = [[UINavigationBar alloc] init];
_navBar.frame = CGRectMake(0,0, self.view.frame.size.width, 64);

// add hambuger menu
//...etc etc

[self.view addSubView:_navbar];

【问题讨论】:

请通过单击顶部菜单栏中的窗口来减小您的模拟器大小,然后检查。 请在 xib 或 storybord 中检查您的视图框架。我认为创建时(在 xcode 6 及更高版本中)它将是默认大小(600x600)。设置实际框架或自动布局约束以适应所有设备。 @SweetAngel 实际上这个特定 vc 的 XIB / 视图的帧宽度是 600 【参考方案1】:

你也可以尝试通过这种方式获取屏幕宽度:

CGRect frame = (CGRect)0,0,CGRectGetWidth([[UIScreen mainScreen]bounds]),64);

也许它会解决你的问题。

【讨论】:

【参考方案2】:

首先,确保您没有硬编码导航栏的宽度。

UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];

其次,如果您启用了自动布局,请确保没有冲突的约束。如果它没有启用,那么我不明白你为什么会遇到这个问题。

【讨论】:

我试过你上面提到的代码,但我仍然得到相同的结果。 你能用用于创建导航栏的代码更新你的帖子吗? 是的,我可以这样做,上面是我用来创建和添加导航栏的代码。

以上是关于UINavigationBar 标题文本部分显示在屏幕上的主要内容,如果未能解决你的问题,请参考以下文章

IOS:UISearchBar 部分覆盖 UINavigationBar 提示

UINavigationBar 显示为半透明而不是不透明的白色

UINavigationBar 后退按钮图标

向左或向右移动 UINavigationBar 标题的文本

居中 UINavigationBar 标题文本问题

UINavigationBar标题不水平居中