如何扩展 UIView 过去包含 UINavigationController
Posted
技术标签:
【中文标题】如何扩展 UIView 过去包含 UINavigationController【英文标题】:How To Extend UIView Past Containing UINavigationController 【发布时间】:2017-05-09 22:24:36 【问题描述】:我有一个 UINavigationController 显示为占据部分屏幕的子视图控制器。我在情节提要中使用简单的嵌入转场来展示它。
UINavigationController 的 rootViewController 有一个小的 UIView,我想将它扩展到子视图控制器容器的边界之外。
我的层次结构如下所示:
1) Main View
2) Container Nav Controller
3) Root View Controller
4) UIView which should extend past the bounds of 2
我在所有包含视图上设置了 clipsToBounds = false,但无济于事。
进行一点视图调试会显示UINavigationTransitionView
介于 2 和 3 之间,且 clipsToBounds = false。我很确定这是导致问题的原因(作为企业应用,我不介意使用私有 API)。
如何让视图扩展到所有容器之外?
【问题讨论】:
分享一些代码吧?你如何呈现 UINavigationController? 它是在容器中使用嵌入 segue 呈现的;一切都是通过故事板完成的。我将进行编辑以澄清, 【参考方案1】:在包含containerView
的ViewController 中,在viewDidLoad()
下,为containerView
创建出口后添加以下代码:
let layoutContainerView = self.containerView.subviews.first;
let navigationTransitionView = layoutContainerView?.subviews.first;
navigationTransitionView?.clipsToBounds = false;
这有点hacky,基本上navigationController
的view
的第一个子视图是UINavigationTransitionView
,其中clipsToBounds = true
。
【讨论】:
以上是关于如何扩展 UIView 过去包含 UINavigationController的主要内容,如果未能解决你的问题,请参考以下文章
如何将 circleView 进度添加到 UIView 扩展到所有 UIView?
如何在包装器 Swift View 中使用自定义 UIView 的扩展功能?
如何检查 UITableViewCell 是不是包含 UIView
带有 CGPath 的 UIView 和另一个包含第一个 UIView 的 UIView。如何将第一个视图放入第二个视图?