我知道这应该是一个非常容易解决的问题,但我似乎没有得到理想的结果。
我有水平滚动UIScroll视图,宽度为320.其内容的宽度为467.我还有垂直滚动的UIScroll视图,高度为310.其内容的高度也是467。
在互联网上搜索答案后,我最接近解决方案的是:
CGFloat newContentOffsetX = (ScrollView.contentSize.width/2) - (ScrollView.bounds.size.width/2);
ScrollView.contentOffset = CGPointMake(newContentOffsetX, 0);
代码出错,可能是因为它是在2013年编写的。我知道这段代码只会水平居中。
非常感谢帮助!
答案 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)
}