ScrollView contentSize 大于 Bounds,但没有滚动
Posted
技术标签:
【中文标题】ScrollView contentSize 大于 Bounds,但没有滚动【英文标题】:ScrollView contentSize Larger than Bounds, Yet No Scrolling 【发布时间】:2015-07-25 00:11:42 【问题描述】:我有一个包含单个图像的滚动视图。图像的边界大于滚动视图的框架。我已将滚动视图的 contentSize 设置为等于图像的边界。 然而没有滚动。我不知道是什么原因造成的。
override func viewDidLoad()
super.viewDidLoad()
var matches = SortThread.getSortThread().retrieveMatches()
scrollView.frame = CGRectMake(0, navigationController!.navigationBar.frame.height - 20, UIScreen.mainScreen().bounds.width, view.bounds.height - (navigationController!.navigationBar.frame.height - 20))
var imageName = String()
imageName = matches[0].pictures![0]
var parsedImageName = imageName.componentsSeparatedByString(".") as [String]
var newImageName: String = parsedImageName[0] as String
let path = NSBundle.mainBundle().pathForResource("MVLMP Images (Resized)/" + newImageName, ofType: "jpg")
var image = UIImage()
image = UIImage(contentsOfFile: path!)!
var imageView = UIImageView(image: image)
var ratio: CGFloat = image.size.width/image.size.height
var screenHeight: CGFloat = UIScreen.mainScreen().bounds.height - navigationController!.navigationBar.frame.height - 20
if(ratio > 1)
imageView.frame = CGRectMake(0, 0, ((scrollView.bounds.width)/7) * 6, 0)
imageView.frame = CGRectMake(0, 0, imageView.frame.width, imageView.frame.width * ratio)
else
imageView.frame = CGRectMake(0, 0, 0, (screenHeight/9)*8)
imageView.frame = CGRectMake(0, 0, imageView.frame.height * ratio, imageView.frame.height)
scrollView.addSubview(imageView)
scrollView.contentSize.width = imageView.frame.width
scrollView.contentSize.height = imageView.frame.height
我已经打印出 scrollView.contentSize.width 和 scrollView.bounds.width 并且内容宽度实际上比边界宽度大 40 左右。
【问题讨论】:
我看到你设置了scrollView的contentSize = image.frame。这可能是个问题,因为滚动与子视图的框架有关。 你是对的。就在几分钟前,我意识到我应该添加包含我的图像的区域的宽度,在许多情况下不一定是我的图像的宽度。谢谢你的评论穆东:)! 【参考方案1】:正如 Muc Dong 评论的那样,我正在将图像的宽度添加到滚动视图的 contentSize.width 中。这不一定是正确的做法,因为在我的情况下,我没有考虑到的图像之间存在一些余量。此边距应包含在对 scrollView.contentSize.width 的添加中。
【讨论】:
以上是关于ScrollView contentSize 大于 Bounds,但没有滚动的主要内容,如果未能解决你的问题,请参考以下文章
添加依赖于scrollView.contentSize的子视图的正确位置是啥?
ScrollView.contentSize 问题无法在顶部、左侧、右侧正确滚动?
在我的情况下,如何正确获取 scrollView 的 contentSize、zoomScale 和 contentOffset?
在 addSubview 中调用具有动态 ScrollView ContentSize Autolayout 的 CustomView
contentSizecontentInset和contentOffset 是 scrollView三个基本的属性区别和使用