我刚刚意识到我的应用程序的一部分在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中,行为必须不同,布局指南保持静态,不会随着滚动而移动。
答案 0 :(得分:3)
一个项目引用了顶部布局指南,而不是父视图。在IOS 11中,行为必须不同,布局指南保持静态,不会随着滚动而移动。