如何将内容集中在滚动视图中?

时间:2015-10-09 17:34:34

标签: ios xcode swift uiscrollview swift2

我知道这应该是一个非常容易解决的问题,但我似乎没有得到理想的结果。

我有水平滚动UIScroll视图,宽度为320.其内容的宽度为467.我还有垂直滚动的UIScroll视图,高度为310.其内容的高度也是467。

在互联网上搜索答案后,我最接近解决方案的是:

CGFloat newContentOffsetX = (ScrollView.contentSize.width/2) - (ScrollView.bounds.size.width/2);
ScrollView.contentOffset = CGPointMake(newContentOffsetX, 0);

代码出错,可能是因为它是在2013年编写的。我知道这段代码只会水平居中。

非常感谢帮助!

2 个答案:

答案 0 :(得分:0)

我在我的应用中使用的代码

    func scrollViewDidZoom(scrollView: UIScrollView) {
    let offsetX = scrollView.bounds.size.width > scrollView.contentSize.width ? (scrollView.bounds.size.width - scrollView.contentSize.width) * 0.5 : 0.0;
    let offsetY = scrollView.bounds.size.height > scrollView.contentSize.height ? (scrollView.bounds.size.height - scrollView.contentSize.height) * 0.5 : 0.0;
    _imageView.center = CGPointMake(scrollView.contentSize.width / 2 + offsetX, scrollView.contentSize.height / 2 + offsetY);
}

答案 1 :(得分:0)

我通常在viewDidLayoutSubviews中设置contentOffset,类似于下面的代码片段。

override func viewDidLayoutSubviews() {
    // Center the ScrollView content
    let centerOffsetX = (scrollView.contentSize.width - scrollView.frame.size.width) / 2
    let centerOffsetY = (scrollView.contentSize.height - scrollView.frame.size.height) / 2
    let centerPoint = CGPoint(x: centerOffsetX, y: centerOffsetY)
    self.scrollView.setContentOffset(centerPoint, animated: true)
}