UIScrollView不在iOS 11中重绘

时间:2017-11-02 12:07:20

标签: ios iphone uiscrollview

我刚刚意识到我的应用程序的一部分在iOS 11上被破坏了。

我有一个UIScrollView,其中包含多个UIViews,其大小仅在填充内容后才知道。所有约束和内容更新后,我习惯设置滚动视图的contentSize,并且它在iOS 10上工作正常。

然而,在iOS 11上,右侧的滚动条确实显示有移动(因此表示' _scrollView.contentOffset.y'当我通过监视&view; viewDidLayoutSubviews' ,见下文)但屏幕上的视觉效果不会移动。

我是否需要强制重绘屏幕?可能是什么原因造成的。

- (void) viewDidLayoutSubviews {
     NSLog(@"Test, content size %f, bounds %f", _scrollView.contentSize.height, _scrollView.contentOffset.y);
}

滚动时的日志:

2017-11-02 12:02:11.831563+0000 iDomsPortal[49338:3761141] Test, content size 1491.000000, bounds 175.666667
2017-11-02 12:02:11.839238+0000 iDomsPortal[49338:3761141] Test, content size 1491.000000, bounds 175.333333
2017-11-02 12:02:11.847142+0000 iDomsPortal[49338:3761141] Test, content size 1491.000000, bounds 175.000000
2017-11-02 12:02:12.942449+0000 iDomsPortal[49338:3761141] Test, content size 1491.000000, bounds 176.000000
2017-11-02 12:02:12.952917+0000 iDomsPortal[49338:3761141] Test, content size 1491.000000, bounds 180.333333 

正如我所建议的那样:

if (@available(iOS 11.0, *)) {
    _scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
    // Fallback on earlier versions
}

[编辑:] 食物问题。一个项目引用了顶部布局指南,而不是父视图。在IOS 11中,行为必须不同,布局指南保持静态,不会随着滚动而移动。

Xcode screenshot

Example on iPhone X simulator

1 个答案:

答案 0 :(得分:3)

一个项目引用了顶部布局指南,而不是父视图。在IOS 11中,行为必须不同,布局指南保持静态,不会随着滚动而移动。