ScrollView:
最基本的,使用时应先设定你需要滚动的画布的大小:
scrollview.contentSize = CGSize(width:1200, height: 2000)
接下来设置你要添加的子View:
aerial.frame = CGRect(x: 150, y: 200, width: 2500, height: 1600)
将需要添加进scrollView的子View加入即可:
scrollView.addSubview(aerial)
通过.contentOffset方法可以获得当前的偏移量,这是一个CGPoint类型。展示在手机上的是整个scrollView的一部分,这一部分的外边框就是scrollView的bounds。如果你想得到一个点在scrollerView中子View的坐标,使用方法convertRect即可。
初始化ScrollView时记得设置contentSize,这个如果不设置你的View的大小是0。
通常用户使用手来滑动ScrollView,你同样可以使用代码来实现:使用方法scrollViewRectToVisible。可以锁定滑动方向只能是上下左右等等,需要时看UIScrollView文档咯。
所有的UI View都有一个属性叫transfrorm,包括scale,rotate,translate等。Zooming一个View会改变它的scale zooming会影响scrollView的contentSize和contentOffect。必须设置最大和最小比例(minimumZoomScale)。同样必须使用代理方法来实现:viewForZoomingInScrollView(Sender: UIScrollerView) -> UIView,这个方法返回你需要Zooming的View。这些都设置好了以后,就可以使用各种方法来Zooming了,比如setZoomScale,zoomToRect等。
在Objective-C中的协议可以指定可选方法,声明实现这个协议的类可以不实现这类方法,Swift中不支持这样的写法,如果你想写,在声明前面加上@obj
@IBOutlet weak var scrollView: UIScrollView!{
didSet{
scrollView.contentSize = imageView.frame.size
scrollView.delegate = self
scrollView.minimumZoomScale = 0.03
scrollView.maximumZoomScale = 1.0
}
}
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return imageView
}
这里完成了Zooming所有该设置的项目,在设置自己为代理时,要在类声明时加上协议,才能自己为自己代理。
即可