Eri*_*ric 45 objective-c uiviewcontroller uikit ios ios7
我有一个带容器视图的UIViewController.此Container视图包含UITableViewController.
UIViewController嵌入在UINavigationController中.我通过改变色调颜色,条纹色调和标题文本属性来配置NavigationBar,但是当我尝试更改半透明时,我遇到了问题.我通过删除所有其他自定义代码来挑出问题.每当我在UIViewController中执行此操作时-viewDidLoad
:
self.navigationController.navigationBar.translucent = NO;
容器视图在其顶部添加了一些空间,就好像它有自己的导航栏一样.每当我将半透明设置为YES时,视图都会正确显示所有内容.只有在我将半透明设置为NO时才会在包含的视图中发生这种情况.
这里有什么我想念的吗?
我尝试将半透明度设置为YES
包含的视图,并将其设置为隐藏,但没有任何效果.不知何故,包含的视图从父容器继承属性?每当我将半透明度设置为NO
?时,如何避免在包含的视图上创建这个额外空间?
我希望设置半透明度只会影响半透明度,但不会影响视图的位置.
半透明= YES时
+---------------------------------+
| |
| UINavigationBar |
| |
+---------------------------------+
| |
| |
| |
| |
| |
| UITableViewController |
| in a Contained View |
| |
| |
| |
| |
| |
| |
+---------------------------------+
Run Code Online (Sandbox Code Playgroud)
当半透明=否
+---------------------------------+
| |
| UINavigationBar |
| |
+---------------------------------+
| |
|blank space created on top of view
| |
+---------------------------------+
| |
| |
| |
| |
| |
| |
| UITableViewController |
| in a Contained View |
| |
+---------------------------------+
Run Code Online (Sandbox Code Playgroud)
PS我的观点比这更复杂,我只是简单地说.
mic*_*tox 34
你在这里缺少的是一个半透明的导航栏位于你的viewcontroller视图的顶部,而一个非半透明的导航栏推动你的视图控制器的视图(有效地调整它的大小).
所以这里发生的事情是,使用半透明的导航栏,白色空间实际上隐藏在栏下面,而当栏不是半透明时,它被"推下".
有很多方法可以解决,主要取决于你是否使用自动布局.
小智 20
我通过添加以下代码来修复此问题-viewDidLoad
:
self.extendedLayoutIncludesOpaqueBars = YES;
Run Code Online (Sandbox Code Playgroud)
Rai*_*rze 17
如果故事板出现此问题(不触及代码中的半透明属性),我发现检查NavigationBar设置以及 - 如有必要 - 故事板源文件是有帮助的.
(这并不完全适用于这个问题,但是当我搜索这个问题时,基本上只会弹出这个问题,也许这些信息会帮助其他人解决同样的问题.)
细节:
要访问情节提要编辑器中的导航栏:显示文档大纲(菜单编辑器 - >显示文档大纲),选择导航栏.
然后在"属性"检查器右侧的"实用工具"窗格中,确保未选中"半透明".
如果这没有帮助,请在TextEdit中打开storyboard文件,查找navigationBar
元素并检查opaque
或translucent
属性.你想要的translucent="NO"
.
(要打开故事板源:在项目导航器的Xcode中右键单击故事板文件.选择"在Finder中显示",在Finder窗口中,右键单击该文件并选择"打开方式..."并选择TextEdit.)
编辑:(我不知道,它是否一直存在,但可以在项目导航器中右键单击storyboard文件并选择"打开为" - >"源代码".无需转到Finder .)