iOS開發(swift):UIScrollView使用詳解
參考資料:https://blog.csdn.net/wwc455634698/article/details/52669946
//建立滾動檢視
let scrollView = UIScrollView()
//設定尺寸
scrollView.frame = CGRectMake(0, 100, self.view.frame.size.width, 200)
//設定背景色
scrollView.backgroundColor = UIColor.redColor()
//新增檢視
self.view.addSubview(scrollView)
//設定滾動條
//是否顯示水平滾動條
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) {
}