它的作用可以理解为,看图片,可以用于轮播图,第一次加载的引导页面,照片展示等。
1 2
| let scrollView = UIScrollView() scrollView.frame = CGRect(x: 0, y: 100, width: 100, height: 100)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| scrollView.contentSize = imageView.bounds.size
scrollView.contentInset = UIEdgeInsets(top: 10, left: 10, bottom: 100, right: 10) scrollView.addSubview(imageView) scrollView.backgroundColor = .gray view.addSubview(scrollView)
scrollView.indicatorStyle = .white
scrollView.delegate = self scrollView.minimumZoomScale = 0.5 scrollView.maximumZoomScale = 2.0 scrollView.zoomScale = 0.5
scrollView.isDirectionalLockEnabled = true
scrollView.bounces = true scrollView.alwaysBounceVertical = true scrollView.alwaysBounceHorizontal = true
scrollView.isPagingEnabled = true
scrollView.decelerationRate
|
缩放需要搭配 zooming 方法
1 2 3
| func viewForZooming(in scrollView: UIScrollView) -> UIView? { return self.imageView }
|
委托代理方法(delegate)
使含有UIScrollView 的 ViewController 遵循 UIScrollViewDelegate 协议,这里用到了扩展
1 2
| extension ViewController: UIScrollViewDelegate { }
|
delegate函数
精度很高 有一个重要的使用场景:打印滚动时坐标的偏移量
1 2 3 4
| func scrollViewDidScroll(_ scrollView: UIScrollView) { var x = scrollView.contentOffset.x print("x = \(x)") }
|
1 2 3
| func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { <#code#> }
|
1 2 3
| func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) { <#code#> }
|
1 2 3
| func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { <#code#> }
|
1 2 3
| func scrollViewDidZoom(_ scrollView: UIScrollView) { <#code#> }
|
其余列在代码框里:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) { print("将要开始减速") } func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { print("减速完成") } func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) { } func viewForZooming(in scrollView: UIScrollView) -> UIView? { return scrollView.viewWithTag(200) } func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) { print("将要开始缩放") } func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat) { print("结束缩放") } func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool { return true } func scrollViewDidScrollToTop(_ scrollView: UIScrollView) { print("scrollView已经回到顶部") }
|
我们也可以为 ScrollView 中添加控件如 UIButton 会遇到一些响应问题,参考文章