Ios 以编程方式在UIScrollView中将子视图居中

Ios 以编程方式在UIScrollView中将子视图居中,ios,swift,uiview,uiscrollview,Ios,Swift,Uiview,Uiscrollview,我看到很多类似的问题,但没有一个能解决我的问题 我正在添加一个UIView作为UIScrollView的子视图。ui视图有3*scrollView.width和3*scrollView.height。因此,我相应地设置了UIScrollView的contentSize。当应用程序启动时,我想在子视图中间的代码> ScReVIEW 窗口,类似这样的东西 内部窗口应该是滚动视图,也是应用程序启动时用户看到的ui视图部分。不管怎样,我都做不到。 滚动视图始终设置为原点(0,0) 是我干的- let m

我看到很多类似的问题,但没有一个能解决我的问题

我正在添加一个
UIView
作为
UIScrollView
的子视图。
ui视图
有3*scrollView.width和3*scrollView.height。因此,我相应地设置了
UIScrollView
contentSize
。当应用程序启动时,我想在<代码>子视图中间的代码> ScReVIEW 窗口,类似这样的东西

内部窗口应该是
滚动视图
,也是应用程序启动时用户看到的
ui视图
部分。不管怎样,我都做不到。
滚动视图始终设置为原点(0,0)

是我干的-

let margins = view.layoutMarginsGuide
scrollView.leftAnchor.constraint(equalTo: margins.leftAnchor).isActive = true
scrollView.rightAnchor.constraint(equalTo: margins.rightAnchor).isActive = true
scrollView.bottomAnchor.constraint(equalTo: margins.bottomAnchor, constant: 0).isActive = true
scrollView.topAnchor.constraint(equalTo: margins.topAnchor).isActive = true

scrollView.center = self.view.center // view is the base view of which scrollView is a subview of. 
subView.leftAnchor.constraint(equalTo: scrollView.leftAnchor, constant: -1*scrollView.frame.width)
subView.topAnchor.constraint(equalTo: scrollView.topAnchor, constant: -1*scrollView.frame.height)

据我所知,你有
uicrollview
UIView
在里面,滚动内容大小为视图高度/宽度的3倍,当应用程序启动时,你需要滚动中心

在这种情况下,我尝试使用故事板尽可能多地关闭,所以我所做的

  • 添加了带约束的
    UIScrollView
  • 顶部
    空格到SuperView,
    尾部
    到SuperView,
    前导
    底部
    到SuperView

  • UIScrollView
    内部添加了带约束的
    UIView
  • Top
    space到SuperView、
    training
    到SuperView、
    Leading
    Bottom
    到SuperView,其高度和宽度等于
    UIView(我们在UIScrollView顶部的视图)
    乘以3倍

    这都是故事板上的内容,现在我们只需要为
    UIScrollView
    设置
    setContentOffset
    ,如下所示

    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)
        }
    
    我们完成了。我希望它能帮助你。 您还可以在以下位置找到代码库:


    愉快的学习。

    据我了解,你有
    uicrollview
    UIView
    在里面,滚动内容大小为视图高度/宽度的3倍,当应用程序启动时,你需要滚动中心

    在这种情况下,我尝试使用故事板尽可能多地关闭,所以我所做的

  • 添加了带约束的
    UIScrollView
  • 顶部
    空格到SuperView,
    尾部
    到SuperView,
    前导
    底部
    到SuperView

  • UIScrollView
    内部添加了带约束的
    UIView
  • Top
    space到SuperView、
    training
    到SuperView、
    Leading
    Bottom
    到SuperView,其高度和宽度等于
    UIView(我们在UIScrollView顶部的视图)
    乘以3倍

    这都是故事板上的内容,现在我们只需要为
    UIScrollView
    设置
    setContentOffset
    ,如下所示

    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)
        }
    
    我们完成了。我希望它能帮助你。 您还可以在以下位置找到代码库:


    学习愉快。

    啊,谢谢你。我需要在scrollView上正确设置contentOffset。这就解决了我的问题。非常感谢您花时间在github上发布代码。啊,谢谢。我需要在scrollView上正确设置contentOffset。这就解决了我的问题。非常感谢您花时间在github上发布代码。