我在SO上看到了许多类似的问题,但没有一个可以解决我的问题。
我正在添加UIView
作为UIScrollView
的子视图。 UIView
有3 * scrollView.width和3 * scrollView.height。所以我相应地设置contentSize
的{{1}}。当应用程序启动时,我希望UIScrollView
窗口位于scrollView
的中间,类似这样 -
subView
当应用启动时,内部窗口应该是 -------------------
| |
| ________ |
| | | |
| | | |
| ------- |
| |
-------------------
以及用户看到的scrollView
部分。然而,我无法实现它。
UIView
始终设置为origin(0,0)
我这样做了 -
scrollView
答案 0 :(得分:1)
根据我的理解,你内部有UIScrollView
和UIView
,内容大小为视图高度/宽度的3倍滚动,当应用启动时,你需要滚动的中心。
在这种情况下,我尝试使用故事板尽可能多地关闭,以便我做了什么,
UIScrollView
约束 Top
空间到SuperView,Trailing
到SuperView,Leading
和Bottom
到superView。
UIView
内添加UIScrollView
约束。 Top
空间到SuperView,Trailing
到SuperView,Leading
和Bottom
到superView,Height and Width
等于UIView (that we have on top of UIScrollView)
,乘数为3倍
这些全部来自故事板,现在我们唯一需要设置的setContentOffset
UIScrollView
就像这样。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let contentOffsetX = (scrollView.contentSize.width/2) - (view.bounds.width/2)
let contentOffsetY = (scrollView.contentSize.height/2) - (view.bounds.height/2)
scrollView.setContentOffset(CGPoint(x: contentOffsetX, y: contentOffsetY), animated: true)
}
我们完成了。我希望它会对你有所帮助。 您还可以在Github.com
找到代码库快乐学习。