UIScrollView相当于Android的ScrollView。可以将UIScrollView理解为一块大的画布,我们可以向其中放入任意尺寸的一组视图。
import UIKit
class ViewController: UIViewController, UIScrollViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let scrollView = UIScrollView(frame: view.bounds)
view.addSubview(scrollView)
// 设置是否翻页
scrollView.isPagingEnabled = true
// 可以滚动的区域
scrollView.contentSize = CGSize.init(width: view.bounds.size.width*9, height: view.bounds.size.height)
// 显⽰示⽔水平滚动条
scrollView.showsHorizontalScrollIndicator = true
// 显⽰示垂直滚动条
scrollView.showsVerticalScrollIndicator = true
// 滚动条样式
scrollView.indicatorStyle = UIScrollView.IndicatorStyle.white
// 设置回弹效果
scrollView.bounces = true
// 设置scrollView可以滚动
scrollView.isScrollEnabled = true
// 当scrollsToTop=true时,点击设备状态栏会自动滚动到顶部
scrollView.scrollsToTop = true
// 缩放的最小比例
scrollView.minimumZoomScale = 0.5
// 放大的最大比例
scrollView.maximumZoomScale = 2.0
// 缩放回弹
scrollView.bouncesZoom = true
for i in 1..<10 {
let imageView = UIImageView(frame: CGRect(x: view.frame.size.width*CGFloat(i-1), y: 0, width: view.frame.size.width, height: view.frame.size.height))
imageView.image = UIImage(named: "美女01.jpg")
scrollView.addSubview(imageView)
}
// 指定scrollView的UIScrollViewDelegate协议,协议里面可以获取具体的滚动的一些状态
scrollView.delegate = self
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
print("scroll view 滚动时调用")
}
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
print("scroll view 开始滑动")
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
print("scroll view结束滑动")
}
}
需要注意的是,向UIScrollView示例中添加的子视图的尺寸已经超出了当前界面的边界,所以需要设置UIScrollView的contentSize属性来控制滚动视图的可滚动范围,从属性名(内容尺寸)就可以理解,其用来设置UIScrollView滚动视图的内容区域尺寸,如果内容区域的尺寸超出了UIScrollView实例本身的尺寸大小,则当前UIScrollView实例就可以进行滑动来适应其内容区域的尺寸。
如果将UIScrollView实例的contentSize属性高度设置为大于UIScrollView本身的高度,滚动视图则会支持纵向的滚动。在进行滚动视图的滑动操作时,细心的读者可以发现,当用户将滚动视图滑动到边缘时,其实还可以继续拖曳一段距离,而当用户手指离开屏幕后,滚动视图会产生回弹效果。这种阻尼回弹效果是由UIScrollView类的bounces属性决定的,其需要设置为一个Bool值,默认为true,即支持回弹效果,如果设置为false则不支持。还有一个细节,当滚动视图的contentSize比其本身的尺寸小时,则默认是不产生阻尼回弹效果的。
在iOS平台上,许多常见的应用程序都有图片轮播视图控件,可以作为图片查看器或者轮播广告位,其一般是通过UIScrollView来实现的,除了可以滚动查看外,这种轮播器还有一个功能,即自动定位分页。所谓自动定位分页,是指当用户图片滑动轮播器在两个图片之间停下时,如果用户抬起手指,轮播器会自动根据图片显示出的部分尺寸大小自动定位,使轮播器完整显示某一张图片。UIScrollView类中提供了isPagingEnabled属性,用来设置是否开启这种定位分页效果。
- 邮箱 :charon.chui@gmail.com
- Good Luck!