当场景嵌入到 NavigationController 中时,如何防止 UIScrollView 被下推?

Posted

技术标签:

【中文标题】当场景嵌入到 NavigationController 中时,如何防止 UIScrollView 被下推?【英文标题】:How to prevent UIScrollView from getting pushed down, when the scene is embedded in a NavigationController? 【发布时间】:2017-03-04 18:12:51 【问题描述】:

我有一个相当复杂的自定义视图设置。 ScrollView 内的 StackView 等。

在我将 ViewController 嵌入 NavigationController 之前,一切正常。 (我花了太长时间才弄清楚.. grinch

它应该是什么样子:

NavigationController 的样子

我认为这与 NavigationBar 有关。但是,由于我对 ios 开发还很陌生,所以我不知道要更改什么。

如果你想看看,我在下面创建了一个 GitHub repo:

https://github.com/Shanakor/ScrollViewIssue

提前致谢

【问题讨论】:

【参考方案1】:

取消选中 ViewController 中的“调整滚动视图插图”。这解决了你的问题。


说明:

从 iOS 7 开始,Apple 改变了带有 UIScrollViews 的 ViewControllers 的显示方式。

当 ViewController 的第一个子视图是 UIScrollView 时,UIScrollView 将从 ViewController 的顶部开始呈现 - 即使 UINavigationBar 在顶部 - 除非您取消选中该按钮或设置 @987654325 @ 到 false 以编程方式。

【讨论】:

您愿意解释一下,为什么这可以解决我的问题?这个选项有什么用,系统做什么或试图做什么? 哦。好的,这是有道理的。太感谢了。我想这是为了在 iOS 应用程序中提供更好的外观和感觉,因为内容滚动到导航栏下方。 没错,就是这个原因:)【参考方案2】:

viewDidLoad() 中将automaticallyAdjustsScrollViewInsets 设置为false

override func viewDidLoad() 
    super.viewDidLoad()

    automaticallyAdjustsScrollViewInsets = false

    // Do any additional setup after loading the view, typically from a nib.

更多信息,请查看Apple's documentation。

希望这会有所帮助。

【讨论】:

以上是关于当场景嵌入到 NavigationController 中时,如何防止 UIScrollView 被下推?的主要内容,如果未能解决你的问题,请参考以下文章

什么是嵌入式

拨开发展迷雾,将“智慧”嵌入全业务场景2022戴尔科技峰会预告

在容器视图中嵌入 NavigationController

当 WKWebView 嵌入到 UITableViewCell 中时,WebView 的后半部分不会显示

当移动到嵌入在 UITableViewCell 中的 UITextView 中的新行时,光标消失

嵌入式C语言设计模式 --- 关于工厂模式的总结