IOS9: UINavigationController 中的 UIScrollView 偏移量

IOS9: UIScrollView offset in UINavigationController

这太令人沮丧了。我遇到 UINavigationController(以及 UINavigationBar)将我的 UIScrollView 的内容向下推到顶部的问题,类似于此处发现的问题:

iOS 7 -- navigationController is setting the contentInset and ContentOffset of my UIScrollView

IOS7 : UIScrollView offset in UINavigationController

我尝试了两种推荐的解决方案:在我的视图控制器的 viewDidLoad() 方法中设置 self.automaticallyAdjustsScrollViewInsets = true 并在 Interface Builder 中取消选择 Adjust Scroll View Insets。这两种解决方案都删除了顶部的边距,但正如其他一些人指出的那样,我无法再滚动了。

UIScrollView 和 ContentView 填满了整个视图控制器。我的内容视图(在 UIScrollView 内)包含标签、段和底部的 UITextView。跟Content View里的内容有关系吗?

如果需要我可以附上图片。使用 XCode 7、Swift 2 和 iOS 9.

可能适用也可能不适用于你,但如果你有一个导航控制器并且你不需要它是半透明的,你可以按照 self.navigationController.navigationBar.translucent = NO;

的方式做一些事情

这可能有助于您的奇数抵消。

我解决了我的问题。在自动布局中,我没有设置内容视图的高度限制。 以前,我将内容视图的底部固定到包含 UIScrollView 的视图控制器。 我删除了那个别针并明确设置了高度。现在可以使用了。

我刚刚 运行 遇到了同样的问题。我有一个 "About" 视图,其中包含一堆包含静态文本的标签。我在视图控制器中有一个 UIScrollView,它被向下推。我在屏幕底部固定了一个标签,在没有必要这样做的时候被从页面上拉下来了。

我有以下视图层次结构:

  • 视图控制器
    • 查看
    • 滚动视图
      • 内容视图 (UIView)
      • 标签
      • 标签

Content View 被固定到 Scroll View 的边界,但宽度和高度具有与 View.

相同的约束

我通过添加另一个 UIView 作为 View 的子项解决了这个问题。我的层次结构现在看起来像这样:

  • 视图控制器
    • 查看
    • 内部视图 (UIView)
    • 滚动视图
      • 内容视图 (UIView)
      • 标签
      • 标签

我将 Content View 的高度限制设置为与 Inner View 相同的高度。这为我解决了问题,一切都开始正确显示。 Inner View 固定在 View 的边框上。

注意:在层次结构中,Label 应该是 Content View 的子级。在预览中,显示 Markdown 列表不能那么深。