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

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

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

它应该是什么样子:

NavigationController 的样子

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

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

https://github.com/Shanakor/ScrollViewIssue

提前致谢

【问题讨论】:

    标签: ios swift uiscrollview autolayout


    【解决方案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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多