iOS 10 - 隐藏视图控制器/导航栏标题
iOS 10 - View Controller / Navigation Bar Title hidden
我目前正面临 iOS10.
的奇怪行为
的确,一切正常,但自从我更新到 xCode 8 并开始在 iOS 10 上测试我的应用程序,很多东西都出错了。
例如,我所有的导航栏的标题都不再显示了。
更准确地说,当我使用菜单导航我的应用程序时,每次切换到不同的视图时,都没有标题,但是当我按下后退按钮时,我可以在过渡到另一个视图。
我不明白这种新行为,我没有更改代码中的任何内容,当我在 iOS 9 或更低版本上启动应用程序时,一切正常。
我尝试在 ViewWillAppear / ViewDidLoad 中设置标题,在 prepareForSegue , 但没有任何效果。
if ([segue.identifier isEqualToString:kMy_Segue]) {
MyViewController* destinationVC = segue.destinationViewController;
[destinationVC setTitle:@"MyTitle"];
}
我觉得推送的导航控制器有一些变化,或者标题项与导航栏本身不在同一个索引处,因为当我在菜单中导航抛出子视图时,标题仅在我按下时出现背部。
例如,我的菜单中有一个名为 "World" 的类别。
当我点击它时,我希望子视图的标题为 "World",但没有显示任何内容。然后,我列出了所有大洲 "Africa"、"Europe"、"Asia" 等...
当我点击 Africa 时,我希望下一个标题是 "Africa" 对吗?
再一次,没有任何显示,但是如果我按下后退按钮并返回到大陆列表,标题 "World" 出现。
如果有人遇到过这个问题,我将不胜感激。
您尝试过将导航项添加到您的导航栏吗?您为此设计使用了 Storyboard。
关注这个:
解决方案一
转到 viewController,然后单击 NavigationItem,如下所示:
在右窗格中,更改 "Title" 如下:
解法-2
将 UIView 添加到您的导航栏,如下所示:
将 UILabel 添加到您的 navigationItem,如下所示:
将新添加的UILabel的frame修改如下:
将 UILabel 的文本更改为 "Sample Title",并将 UIView backgroundColor 更改为 clearColor。
我在Xcode8做了一个样例,请查看我下面的GitHublink:
我找到了解决问题的办法。真的很奇怪。
主页上的导航栏有淡入淡出的动画。
这是一个滚动视图,所以当我向下滚动时,我仍然可以看到标题和导航栏。
在 iOS < 10 时,淡入淡出动画只改变背景颜色和透明度。但是当我在 iOS 10 上启动应用程序时,淡入淡出效果隐藏了所有内容,菜单图标、标题,所有内容。我相信 Apple 改变了导航栏项目的结构。
此外,当我点击菜单图标导航时,当淡入淡出动画正在进行时,我可以看到标题和导航栏项目在 "fade effect" 下,甚至下一个导航后 ViewControllers 的标题。
所以它工作正常,只是菜单图标、标题等隐藏在导航栏上。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
UIColor * color = [Constants backgroundColor];
CGFloat offsetY = scrollView.contentOffset.y;
CGFloat threshold = 250;
if (offsetY > threshold) {
[self.navigationController.navigationBar lt_setBackgroundColor:[color colorWithAlphaComponent:1]];
} else {
CGFloat alpha = offsetY / threshold;
[self.navigationController.navigationBar lt_setBackgroundColor:[color colorWithAlphaComponent:alpha]];
}
}
我猜问题出在我用来动态更改 NavigationBar 外观的库 LTNavigationBar...
我目前正面临 iOS10.
的奇怪行为的确,一切正常,但自从我更新到 xCode 8 并开始在 iOS 10 上测试我的应用程序,很多东西都出错了。
例如,我所有的导航栏的标题都不再显示了。
更准确地说,当我使用菜单导航我的应用程序时,每次切换到不同的视图时,都没有标题,但是当我按下后退按钮时,我可以在过渡到另一个视图。
我不明白这种新行为,我没有更改代码中的任何内容,当我在 iOS 9 或更低版本上启动应用程序时,一切正常。
我尝试在 ViewWillAppear / ViewDidLoad 中设置标题,在 prepareForSegue , 但没有任何效果。
if ([segue.identifier isEqualToString:kMy_Segue]) {
MyViewController* destinationVC = segue.destinationViewController;
[destinationVC setTitle:@"MyTitle"];
}
我觉得推送的导航控制器有一些变化,或者标题项与导航栏本身不在同一个索引处,因为当我在菜单中导航抛出子视图时,标题仅在我按下时出现背部。
例如,我的菜单中有一个名为 "World" 的类别。 当我点击它时,我希望子视图的标题为 "World",但没有显示任何内容。然后,我列出了所有大洲 "Africa"、"Europe"、"Asia" 等... 当我点击 Africa 时,我希望下一个标题是 "Africa" 对吗? 再一次,没有任何显示,但是如果我按下后退按钮并返回到大陆列表,标题 "World" 出现。
如果有人遇到过这个问题,我将不胜感激。
您尝试过将导航项添加到您的导航栏吗?您为此设计使用了 Storyboard。
关注这个:
解决方案一
转到 viewController,然后单击 NavigationItem,如下所示:
在右窗格中,更改 "Title" 如下:
解法-2
将 UIView 添加到您的导航栏,如下所示:
将 UILabel 添加到您的 navigationItem,如下所示:
将新添加的UILabel的frame修改如下:
将 UILabel 的文本更改为 "Sample Title",并将 UIView backgroundColor 更改为 clearColor。
我在Xcode8做了一个样例,请查看我下面的GitHublink:
我找到了解决问题的办法。真的很奇怪。
主页上的导航栏有淡入淡出的动画。 这是一个滚动视图,所以当我向下滚动时,我仍然可以看到标题和导航栏。
在 iOS < 10 时,淡入淡出动画只改变背景颜色和透明度。但是当我在 iOS 10 上启动应用程序时,淡入淡出效果隐藏了所有内容,菜单图标、标题,所有内容。我相信 Apple 改变了导航栏项目的结构。
此外,当我点击菜单图标导航时,当淡入淡出动画正在进行时,我可以看到标题和导航栏项目在 "fade effect" 下,甚至下一个导航后 ViewControllers 的标题。
所以它工作正常,只是菜单图标、标题等隐藏在导航栏上。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
UIColor * color = [Constants backgroundColor];
CGFloat offsetY = scrollView.contentOffset.y;
CGFloat threshold = 250;
if (offsetY > threshold) {
[self.navigationController.navigationBar lt_setBackgroundColor:[color colorWithAlphaComponent:1]];
} else {
CGFloat alpha = offsetY / threshold;
[self.navigationController.navigationBar lt_setBackgroundColor:[color colorWithAlphaComponent:alpha]];
}
}
我猜问题出在我用来动态更改 NavigationBar 外观的库 LTNavigationBar...