我有一个水平scrollView
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
for image in imageArray {
let imageView = UIImageView(image: image)
scrollView.addSubview(imageView)
imageViews.append(imageView)
}
}
override func viewDidLayoutSubviews() {
for (index,imageView) in imageViews.enumerate() {
imageView.frame = CGRectMake(CGFloat(index)*scrollView.frame.size.width, 0, scrollView.frame.size.width, scrollView.frame.size.height)
}
let imageArrayCount = CGFloat(imageArray.count)
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * imageArrayCount, scrollView.frame.size.height)
}
如何修改它以使方法viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView?
有效?方法描述说,我需要视图,它将被缩放,但我不明白如何在scrollview中嵌入新视图。
答案 0 :(得分:1)
函数viewForZoomingInScrollView(_:)
应该返回将用于缩放的一个 UIView
(此视图的比例将被更改)。因此,您必须将所有图像放入一个视图中,并将视图添加到滚动视图中。
这是你需要做的缩放工作:
为容器视图添加属性:
class YourViewControllerClass: UIViewController {
let imagesContainerView = UIView()
...
}
将所有图像视图添加到此容器视图,并将容器视图添加到滚动视图:
scrollView.addSubview(imagesContainerView)
view.addSubview(scrollView)
for image in imageArray {
let imageView = UIImageView(image: image)
imagesContainerView.addSubview(imageView)
imageViews.append(imageView)
}
为滚动视图设置contentSize
后,相应地设置容器视图的框架:
imagesContainerView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height)
通过在滚动视图上设置最大和最小缩放比例启用缩放并设置代理:
scrollView.maximumZoomScale = 5.0
scrollView.minimumZoomScale = 1
scrollView.delegate = self
实施委托方法:
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return imagesContainerView
}