scrollView .showsHorizontalScrollIndicator = true //是否显示竖直滚动条 scrollView .showsVerticalScrollIndicator = false //设置分页滚动 scrollView .pagingEnabled = true //设置是否可以拉出空白区域 scrollView .bounces = true //默认是false。如果是true并且bounces也是true,即使内容尺寸比scrollView的尺寸小,也能垂直推动 scrollView .alwaysBounceVertical = false //默认是false。如果是true并且bounces也是true,即使内容尺寸比scrollView的尺寸小,也能水平推动 scrollView .alwaysBounceHorizontal = false //允许滑动视图本身,如果设为false就不能触发拖动代理事件 scrollView .scrollEnabled = false //在scrollView的内容周围添加一个附件的区域 scrollView .contentInset = UIEdgeInsetsMake( 100 , 50 , 50 , 50 ) //调整指示器(滚动条)的位置 scrollView .scrollIndicatorInsets = UIEdgeInsetsMake( 30 , 30 , 30 , 30 ) //设置指示器(滚动条)的样式 scrollView .indicatorStyle = UIScrollViewIndicatorStyle .Black //黑色 //最小的缩放倍数,默认值为1.0 scrollView .minimumZoomScale = 0.2 //放大的缩放倍数,默认值为1.0 scrollView .maximumZoomScale = 100 //创建一个数组,存储三张图片 let imagesArray = [ "DOVE 2" , "DOVE 5" , "DOVE 10" ] //循环创建ImageView for i in 0. .<imagesArray .count { //创建imageView let imageView = UIImageView (frame: CGRectMake( CGFloat (i)*scrollView .frame .size .width , 0 , scrollView .frame .size .width , scrollView .frame .size .height )) //添加图片 imageView .image = UIImage (named: imagesArray[i]) //打开用户交互 imageView .userInteractionEnabled = true //把imageView添加到滚动视图上 scrollView .addSubview (imageView) //设置内容区域 scrollView .contentSize = CGSizeMake(scrollView .frame .size .width * CGFloat (imagesArray .count ),scrollView .frame .size .height ) //设置代理 scrollView .delegate = self //设置directionalLockEnabled 如果这个性能被设置成false,scrollView会被允许在水平和垂直两个方向滚动。如果设置性能是true并且用户开始在一个方向拖动时(水平方向或垂直方向),滚动视图就不能在另一个方向滚动。如果拖动的方向时斜对角线方向,拖动事件将会被锁住并且用户可以在任何方向拖动,直到拖动事件结束。这个属性的默认值是false。 scrollView .directionalLockEnabled = true //设置偏移量,以固定的速度设置成新的偏移量 scrollView .setContentOffset (CGPointMake( 10 , 20 ), animated: false ) //滚动矩形区域到可见的区域,如果完全可见就不做任何操作 scrollView .scrollRectToVisible (CGRectMake( 0 , 0 , 100 , 300 ), animated: false ) //短时间显示滚动条,当你 scrollView .flashScrollIndicators () //当用户触摸到scrollView时(即使还没有开始拖动ScrollView)就会返回一个true值 scrollView .tracking //当用户已经开始拖动时会返回一个true值,这可能会需要一点时间或者与拖动一段距离 scrollView .dragging //当用户不再拖动或者不再触摸scrollView(但是scrollView仍在滑动) scrollView .decelerating //默认值为true scrollView .delaysContentTouches = true //默认值为true。如果为false,一旦我们开始追踪并且触摸移动,我们无法拖动 scrollView .canCancelContentTouches = true //如果手势已经被传递到了scollView的父View上,在视图开始滚动之前毁掉用这个方法。如果这个方法返回的是false,scrollView不会滚动并且这个手势会继续向父View传递 // scrollView.touchesShouldCancelInContentView(<#T##view: UIView##UIView#>) //设置缩放 // scrollView.setZoomScale(<#T##scale: CGFloat##CGFloat#>, animated: <#T##Bool#>) // scrollView.zoomToRect(<#T##rect: CGRect##CGRect#>, animated: <#T##Bool#>) //默认为true。如果设置,当手势起作用时用户会经过最小/最大的区域,并且,在手势结束时这个区域会自动设置为最小/最大值。 scrollView .bouncesZoom = true // 当用户向上的手势时,会返回true scrollView .zooming NSLog ( "scrollView.zooming>>>>>%zd" ,scrollView .zooming ) //当我们在最小和最大值中间的一个区域中,会返回true。 scrollView .zoomBouncing //滚动到顶部,默认值为true scrollView .scrollsToTop = true //使用这些容器配置scrollView内置的手势识别 scrollView .panGestureRecognizer scrollView .pinchGestureRecognizer //创建UIPageControl let pageControl = UIPageControl(frame: CGRectMake( 0 , scrollView .frame .size .height - 30 , 200 , 30 )) //总的图片页数 pageControl .numberOfPages = 6 //当前页 pageControl .currentPage = 0 //用户点击UIPageControl的响应函数 pageControl .addTarget ( self , action: #selector(pageTurn(_:)), forControlEvents: UIControlEvents.ValueChanged) //设置pageControl 的尺寸 let size = pageControl .sizeForNumberOfPages ( 6 ) //点点的点击事件 func pageTurn(pageControl:UIPageControl) { //UIscrollView的协议代理方法 //滑动过程中 func scrollViewDidScroll(scrollView: UIScrollView ) { //开始拖动 func scrollViewWillBeginDragging(scrollView: UIScrollView ) { //开始拖动(以某种速率和偏移量) func scrollViewDidEndDecelerating(scrollView: UIScrollView ) { //停止拖动 func scrollViewDidEndDragging(scrollView: UIScrollView , willDecelerate decelerate: Bool) { //开始滑动 func scrollViewWillBeginDecelerating(scrollView: UIScrollView ) { //允许缩放的视图(一个scrollview中只能有一个可以缩放且必须设置可以缩放的范围) // func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { // //返回被缩放的试图 // //return imageView; // } //开始缩放的时候调用 func scrollViewWillBeginZooming(scrollView: UIScrollView , withView view: UIView ?) { //正在缩放的时候调用 func scrollViewDidZoom(scrollView: UIScrollView ) { //缩放完毕的时候调用 func scrollViewDidEndZooming(scrollView: UIScrollView , withView view: UIView ?, atScale scale: CGFloat ) { //将要滚动到顶部的时候调用 func scrollViewShouldScrollToTop(scrollView: UIScrollView ) -> Bool { return true //滚动到顶部的时候调用 func scrollViewDidScrollToTop(scrollView: UIScrollView ) { 文章目录VerticalHorizontalVerticalAndHorizontal https://developer.apple.com/documentation/ swift ui/ scrollview Vertical struct ContentView : View var body: some View ScrollView (.vertical, showsIndicators: false) 众所周知,UITableView和UICollectionView都继承于 UIScrollView ,实际本文说的就是 UIScrollView 嵌套 UIScrollView 的事。 首先,自定义Nest ScrollView 继承于 UIScrollView ,实现UIGestureRecognizerDelegate协议中的 方法 允许手势同时识别。 import Foundation import UIKit class Nest ScrollView : UIScrollView { required init 参考资料:https://blog.csdn.net/wwc455634698/article/details/52669946 移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限 当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容 普通的UIView不具备滚动功能,不适合显示过多的内容。 UIScrollView 是一个能够滚动的视图控件,可以用来展... 创建子视图并添加到 UIScrollView : let subViewOne = UIView(frame: self.view.frame) let subViewTwo = UIView(frame: CGReact(x: self.view.frame.size.width, y: 0, width: self.view.frame.size.width, height: class TextViewController: UIViewController , UIScrollView Delegate{ let scrollView = UIScrollView () override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white view.addSubview( scrollView )         let scroll = UIScrollView ()         scroll.frame = self.view.bounds         scroll.showsVerticalScrollIndicator = false         scroll.showsHorizontalScrollIndicator = false 今天博主在封装下拉刷新时遇到了这个问题,在给 UIScrollView 添加UIPanGestureRecognizer时 UIScrollView 无法滑动了。博主也试了UITableView和UICollectionView,也出了同样的问题。在网上找了很久,终于解决了这个问题,只需要扩展 UIScrollView 使它遵循UIGestureRecognizerDelegate,并实现其中的一个 方法 就可以 let width:CGFloat = 375 let height:CGFloat = 668 class ViewController: UIViewController, UIScrollView Delegate { var pageControl:UIPageControl? var tmpSV: UIScrollView ? override func vi UIScrollView 是IOS中非常有用的一个组件。它是通用组件UITableView的基类也是放置尺寸大于一个屏幕的内容时很好的组织方式。本教程会介绍 UIScrollView 的下列用法: 如何使用 UIScrollView 浏览大尺寸图片。 如何在缩放时保持 UIScrollView 中的内容居中. ... // Created by dongqiangfei on 16/3/17. import UIKit class ViewController: UIViewController, UIScrollView Delegate{ va... tableView.scrollRectToVisible(CGRect(x: 0, y: 0, width: tableView.width, height: tableView.height), animated: false) 在tableView上使用,有时会无效,无法回到顶部 解决 方法 : if #available(iOS 11.0, *) {