如何在滚动视图中将内容居中?
Posted
技术标签:
【中文标题】如何在滚动视图中将内容居中?【英文标题】:How do you center the content in a scrollview? 【发布时间】:2015-10-09 17:34:33 【问题描述】:我知道这应该是一个很容易解决的问题,但我似乎没有得到想要的结果。
我有一个宽度为 320 的水平滚动 UIScroll 视图。其内容的宽度为 467。我还有一个高度为 310 的垂直滚动 UIScroll 视图。其内容的高度也是 467。
在互联网上搜索答案后,我最接近的解决方案是:
CGFloat newContentOffsetX = (ScrollView.contentSize.width/2) - (ScrollView.bounds.size.width/2);
ScrollView.contentOffset = CGPointMake(newContentOffsetX, 0);
代码出现错误,可能是因为它是在 2013 年编写的。而且我知道这段代码只会将内容水平居中。
非常感谢您的帮助!
【问题讨论】:
你遇到了什么错误? 【参考方案1】:我一般在viewDidLayoutSubviews里面设置contentOffset,类似下面的sn-p代码
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)
【讨论】:
【参考方案2】:我在应用中使用的这段代码
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);
【讨论】:
以上是关于如何在滚动视图中将内容居中?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI当总内容宽度小于屏幕宽度时,如何在动态水平滚动视图中居中内容