UIScrollView屏幕滾動事件

UIScrollView屏幕滾動事件

一、知識點簡單介紹
1.UIScrollView控件是什么?
(1)移動設備的屏幕?小是極其有限的,因此直接展示在?戶眼前的內容也相當有限
(2)當展?的內容較多,超出?個屏幕時,?戶可通過滾動?勢來查看屏幕以外的內容
(3)普通的UIView不具備滾動功能,不能顯示過多的內容
(4)UIScrollView是一個能夠滾動的視圖控件,可以?來展示大量的內容,并且可以通 過滾 動查看所有的內容
2.UIScrollView的簡單使用
(1)將需要展?的內容添加到UIScrollView中
(2)設置UIScrollView的contentSize屬性,告訴UIScrollView所有內容的尺?寸,也就是告訴 它滾動的范圍(能滾多遠,滾到哪?是盡頭)
3.注意點
? 如果UIScrollView?無法滾動,可能是以下原因:
(1)沒有設置contentSize
(2) scrollEnabled = NO
(3) 沒有接收到觸摸事件:userInteractionEnabled = NO
(4)沒有取消autolayout功能(要想scrollView滾動,必須取消autolayout)
二、關于UIScrollView常見屬性的一些說明

import UIKit

class ViewController: UIViewController {
    
    //屏幕的寬
    let kScreenWidth = UIScreen.main.bounds.size.width
    //屏幕的高
    let kScreenHeight = UIScreen.main.bounds.size.height

    override func viewDidLoad() {
        super.viewDidLoad()
//===================UIScrollView====================
        //是所有滾動視圖的積累,只要一個視圖能夠滾動,要么是UIScrollView,要么是UIScrollView的子類,UIScrollView有兩個很重要的類:UITableView,UICollectionView
        //什么時候才需要滾動,當我們的內容區域大于可視區域的時候,為了看到更多的內容,才需要滾動去查看。
        //創建UIScrollView
        let scrollView = UIScrollView(frame: CGRect(x: 20, y: 20, width: kScreenWidth-40, height: kScreenHeight-40))
        scrollView.backgroundColor = UIColor.white
        //設置scrollView的內容區域大小
        scrollView.contentSize = CGSize(width: kScreenWidth*3, height: kScreenHeight*2)
        //設置scrollView的偏移量(重要)
        scrollView.contentOffset = CGPoint(x: kScreenWidth, y: 0)
        //設置滾動條的樣式
        scrollView.indicatorStyle = .white
        
        //設置是否顯示滾動條
        scrollView.showsVerticalScrollIndicator = false//垂直滾動條
        scrollView.showsHorizontalScrollIndicator = false//水平滾動條
        
        //方向鎖(水平移動就不能垂直移動,垂直移動就不能水平移動,只能朝一個方向滾動)
        scrollView.isDirectionalLockEnabled = true
        
        // 設置是否有彈簧效果
        scrollView.bounces = false
        
        //設置是否在水平方向上總是有彈簧效果(當內容區域和可視區域一樣大使)
//       scrollView.alwaysBounceHorizontal = true
        //設置是否在垂直方向上總是有彈簧效果
//      scrollView.alwaysBounceVertical = true
        
        //設置是否支持整頁滾動
        scrollView.isPagingEnabled = true
        
        //關閉滾動功能
        scrollView.isScrollEnabled = true
        
        //設置scrollView是否支持點擊狀態欄回到頂部
        scrollView.scrollsToTop = true
        
        //scrollView代理屬性
        scrollView.delegate = self
        
        //設置scrollView最大最小縮放比例
        scrollView.minimumZoomScale = 1
        scrollView.maximumZoomScale = 3
        
        self.view.addSubview(scrollView)
        
        
        let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: kScreenWidth-40, height: kScreenHeight-40))
        imageView.image = #imageLiteral(resourceName: "girl2.jpg")
        imageView.tag = 200
        scrollView.addSubview(imageView)
        

    }

}
//在延展中管理UIScrollViewDelegate的協議方法
extension ViewController :UIScrollViewDelegate {
   
    //1.當scrollView滾動的時候,這個方法會持續觸發
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        print("滾動著")
        print(scrollView.contentOffset)
    }
    

    //2.縮放的過程中持續觸發
    func scrollViewDidZoom(_ scrollView: UIScrollView) {
        print("縮放著")
        print(scrollView.zoomScale)
    }

    //3.將要開始拖拽的時候觸發
    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
        print("將要開始拖拽")
    }
    
    //4.將要結束拖拽的時候觸發
    func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
        print("將要結束拖拽")
    }
    
    //5.已經結束拖拽的時候觸發
    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        print("結束拖拽")
    }
    
    //6.將要開始減速的時候觸發
    func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
        print("將要開始減速")
    }
    
    //7.已經結束減速完成的時候觸發,速度為0,往往都是在這個方法中獲取scrollView的contentOffset(很重要)
    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        print("減速完成")
    }
    
    //8.給scrollView設置一個結束動畫的時候觸發,不指定動畫不會觸發
    func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
        
    }
    
    //9.返回scrollView上縮放的視圖
    func viewForZooming(in scrollView: UIScrollView) -> UIView? {
        return scrollView.viewWithTag(200)
    }
    
    //10.將要開始縮放的時候觸發
    func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) {
        print("將要開始縮放")
    }
    
    //11.結束縮放的時候觸發
    func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat) {
        print("結束縮放")
    }
    
    //12.設置點擊狀態欄的時候是否回到頂部
    func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool {
        return true
    }
    
    //13.scrollView已經回到頂部的時候觸發的方法
    func scrollViewDidScrollToTop(_ scrollView: UIScrollView) {
        print("scrollView已經回到頂部")
    }
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,232評論 4 61
  • 生物鐘錯亂了。晚起。 晨間日記 喝水 做飯 收拾行李 敲定攻略 記賬:支出25 練字: 看書:傲慢與偏見 運動:
    理想幾塊錢一斤閱讀 117評論 0 0
  • 新的一年即將過去了1/4,我問自己,去年有什么遺憾嗎?去年的愿望實現了嗎? 好像什么愿望也沒實現,好像遺憾一大堆。...
    快樂凱寧閱讀 266評論 0 1
  • 跟著閣閣老師,臨摹了一只QQ的小蜜蜂。貌似嘴巴有點尖,想重畫來著。可又一下子掉進了水彩的坑……所以,炸毛的蜜蜂委屈...
    笑語淺兮閱讀 277評論 3 5