容器视图被推下来,就像它有一个UINavigationBar?
我有一个容器视图的UIViewController。 这个容器视图包含一个UITableViewController。
UIViewControllerembedded在UINavigationController中。 我通过更改色调颜色,条形色彩和标题文本属性来configurationNavigationBar,但是当我尝试更改半透明性时,我遇到了问题。 我已经通过删除所有其他自定义代码来单独解决问题。 每当我在UIViewController的-viewDidLoad
这样做:
self.navigationController.navigationBar.translucent = NO;
容器视图在其本身上增加了一些空间,就好像它有自己的导航栏一样。 每当我将半透明设置为YES,视图将正确显示所有内容。 这只发生在一个包含的视图,每当我设置半透明的NO。
有什么我在这里失踪?
我试图将半透明设置为YES
,并将其设置为隐藏,但没有任何工作。 是不知何故,包含的视图inheritance父容器的属性? 当我将半透明设置为NO
时,如何避免在包含视图上创build的额外空间?
我认为设置半透明只会影响半透明性,而不是影响观点的位置。
半透明= YES时
+---------------------------------+ | | | UINavigationBar | | | +---------------------------------+ | | | | | | | | | | | UITableViewController | | in a Contained View | | | | | | | | | | | | | +---------------------------------+
当半透明= NO
+---------------------------------+ | | | UINavigationBar | | | +---------------------------------+ | | |blank space created on top of view | | +---------------------------------+ | | | | | | | | | | | | | UITableViewController | | in a Contained View | | | +---------------------------------+
PS我的观点比这更复杂,我简单。
这里缺less的是半透明的导航栏位于视图控制器的视图之上,而非半透明的导航栏将视图控制器视图(有效地resize)放下。
所以这里发生的事情是,用一个半透明的导航栏,这个白色空间实际上隐藏在酒吧下面,而当酒吧不是半透明时,它被“推倒”。
有很多方法可以去做,主要取决于你是否使用自动布局。
如果故事板出现此问题(不需触摸代码中的半透明属性),我发现检查NavigationBar设置以及 – 如果需要,故事板源文件是有帮助的。
(这个问题并不完全适用于这个问题,但是当我search这个问题的时候,基本上只有这个问题出现了,也许这个信息可以帮助其他人解决同样的问题。)
细节:
要访问故事板编辑器中的导航栏:显示文档大纲(菜单编辑器 – >显示文档大纲),请select导航栏。
然后在“属性”检查器右侧的“实用程序”窗格中,确保“半透明”未选中。
如果这不起作用,请在TextEdit中打开故事板文件,查找navigationBar
元素并检查opaque
或translucent
属性。 你想要translucent="NO"
。
(打开故事板源代码:在项目导航器的Xcode中,右键单击故事板文件,select“在Finder中显示”,在Finder窗口中,右键单击文件,select“打开方式…”并select文本编辑。
编辑:(我不知道,是否一直在那里,但是可以在项目导航器中右键点击故事板文件并select“Open As” – >“Source Code”。不需要去Finder 。)
我通过在viewDidLoad中添加此代码行的方法解决了这个问题
- self.extendedLayoutIncludesOpaqueBars = YES;
截图
我通过进入IB来解决这个问题>select视图>取消select“调整滚动条插入”
这纯粹是因为你的汽车布局问题,可能是你在开始时隐藏了一些意见,只是显示所有的意见,并检查空间是否仍然存在
从iOS 7.0开始,所有的视图都会自动隐藏在导航栏,工具栏和标签栏后面,以提供Apple称之为“上下文”的内容 – 了解UI下面的内容(尽pipe模糊的磨砂玻璃效果)可以让用户了解其他只是在屏幕外。
如果这种方式正在逐步实现(老实说,它确实经常令人惊讶),您可以通过修改边缘的BorderForExtendedLayout属性,轻松地禁用它给定的视图控制器。
例如,如果你不想要一个视图控制器后面的任何酒吧,使用这个:
edgesForExtendedLayout = []
从iOS 7.0可用
资源
设置tableView.opaque = false
为我工作
- boundingRectWithSize为NSAttributedString返回错误的大小
- Xcode错误:由于未知的原因,提取失败
- 无法访问dispatch_async中的全局variables:“Variable is not Assignable(missing _block type specifier)”
- 如何在Swift中进行全屏幕截图?
- iOS SKSpriteKit – 由SKLightNode引起的闪烁
- NSLayoutAttributeLeft vs NSLayoutAttributeLeading之间的区别
- 将iPhone xib转换为iPad xib?
- 模拟器无法启动,因为它已经被使用
- iPhone解压缩代码