我有一个 UIViewController
,其结构如下:
查看 -> ScrollView -> 查看 -> 各种各样的东西
我读到最好将“各种东西”放在 ScrollView 内的 View 中。一切都很完美,直到我必须支持 iPhone 5 并使用 AutoLayout。现在 ScrollView 已经成为我存在的祸根。
如何让 ScrollView 正确滚动?我已经尝试了各种方法,但它只是无法正常工作,或者如果它可以工作,它会不断地想要滚动到顶部,或者当导航回屏幕时,内容偏移量是错误的。
目前我有以下方法可以使 ScrollView 半工作:
public override void ViewDidLayoutSubviews()
{
base.ViewDidLayoutSubviews();
View.LayoutIfNeeded();
scrollView.ContentSize = scrollView.Subviews[0].Frame.Size;
}
使用自动布局执行此操作的正确方法是什么?应该没这么难吧!必须有一种方法可以通过 IB 或代码使其正确...
最佳答案
该功能是不必要的。如果您使用 IB,请确保 UIScrollView 的“底部空间: View ”约束等于默认值。您可以通过在编辑约束时选中“标准”复选框来完成此操作。
如果您滚动离开起始位置,导航到另一个页面并导航回来,UIScrollView 的行为仍然会很奇怪。您可以通过在 ViewWillAppear 中将 UIScrollView 的 contentOffset 重置为 (0, 0) 来解决此问题:
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
scrollView.ContentOffset = new PointF(0, 0);
}
关于iphone - 具有自动布局的 UIScrollView 无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17421321/