Swift學(xué)習(xí)筆記7-UIScrollView瞻赶、UITableView使用

UIScrollView——基本使用

//創(chuàng)建滾動視圖
        let scrollView = UIScrollView()
        
        //設(shè)置尺寸
        scrollView.frame = CGRect(x: 0, y: 0, width: 375, height: 60);
        
        //設(shè)置背景色
        scrollView.backgroundColor = UIColor.redColor()
        
        //添加視圖
        self.view.addSubview(scrollView)
        
        //設(shè)置滾動條
        //是否顯示水平滾動條
        scrollView.showsHorizontalScrollIndicator = true
        //是否顯示豎直滾動條
        scrollView.showsVerticalScrollIndicator = false
        
        //設(shè)置分頁滾動
        scrollView.pagingEnabled = true
        
        //設(shè)置是否可以拉出空白區(qū)域
        scrollView.bounces = true
        
        //默認(rèn)是false赛糟。如果是true并且bounces也是true,即使內(nèi)容尺寸比scrollView的尺寸小砸逊,也能垂直推動
        scrollView.alwaysBounceVertical = false
        
        //默認(rèn)是false璧南。如果是true并且bounces也是true,即使內(nèi)容尺寸比scrollView的尺寸小师逸,也能水平推動
        scrollView.alwaysBounceHorizontal = false
        
        
        //允許滑動視圖本身司倚,如果設(shè)為false就不能觸發(fā)拖動代理事件
        scrollView.scrollEnabled = false
        
        //在scrollView的內(nèi)容周圍添加一個附件的區(qū)域
        scrollView.contentInset =  UIEdgeInsetsMake(100, 50, 50, 50)
        
        //調(diào)整指示器(滾動條)的位置
        scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(30, 30, 30, 30)
        
        //設(shè)置指示器(滾動條)的樣式
        scrollView.indicatorStyle = UIScrollViewIndicatorStyle.Black//黑色
        
        //最小的縮放倍數(shù),默認(rèn)值為1.0
        scrollView.minimumZoomScale = 0.2
        
        //放大的縮放倍數(shù)篓像,默認(rèn)值為1.0
        scrollView.maximumZoomScale = 100
        
        //創(chuàng)建一個數(shù)組动知,存儲三張圖片
        let imagesArray = ["DOVE 2","DOVE 5","DOVE 10"]
        
        //循環(huán)創(chuàng)建ImageView
        for i in 0..<imagesArray.count {
            
            //創(chuàng)建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)
        }
        
        //設(shè)置內(nèi)容區(qū)域
        scrollView.contentSize = CGSizeMake(scrollView.frame.size.width*CGFloat(imagesArray.count),scrollView.frame.size.height)
        
        //設(shè)置代理
        scrollView.delegate = self
        
        //設(shè)置directionalLockEnabled
        /*
         
         如果這個性能被設(shè)置成false,scrollView會被允許在水平和垂直兩個方向滾動员辩。如果設(shè)置性能是true并且用戶開始在一個方向拖動時(水平方向或垂直方向)盒粮,滾動視圖就不能在另一個方向滾動。如果拖動的方向時斜對角線方向奠滑,拖動事件將會被鎖住并且用戶可以在任何方向拖動拆讯,直到拖動事件結(jié)束。這個屬性的默認(rèn)值是false养叛。
         */
        scrollView.directionalLockEnabled = true
        
        //設(shè)置偏移量,以固定的速度設(shè)置成新的偏移量
        scrollView.setContentOffset(CGPointMake(10, 20), animated: false)
        
        //滾動矩形區(qū)域到可見的區(qū)域宰翅,如果完全可見就不做任何操作
        scrollView.scrollRectToVisible(CGRectMake(0, 0, 100, 300), animated: false)
        
        //短時間顯示滾動條弃甥,當(dāng)你
        scrollView.flashScrollIndicators()
        
        //當(dāng)用戶觸摸到scrollView時(即使還沒有開始拖動ScrollView)就會返回一個true值
        scrollView.tracking
        
        //當(dāng)用戶已經(jīng)開始拖動時會返回一個true值,這可能會需要一點(diǎn)時間或者與拖動一段距離
        scrollView.dragging
        
        //當(dāng)用戶不再拖動或者不再觸摸scrollView(但是scrollView仍在滑動)
         scrollView.decelerating
        
        //默認(rèn)值為true
        scrollView.delaysContentTouches = true
        
        //默認(rèn)值為true汁讼。如果為false,一旦我們開始追蹤并且觸摸移動淆攻,我們無法拖動
        scrollView.canCancelContentTouches = true
        
        //如果手勢已經(jīng)被傳遞到了scollView的父View上阔墩,在視圖開始滾動之前毀掉用這個方法。如果這個方法返回的是false瓶珊,scrollView不會滾動并且這個手勢會繼續(xù)向父View傳遞
//        scrollView.touchesShouldCancelInContentView(<#T##view: UIView##UIView#>)
        
        //設(shè)置縮放
//        scrollView.setZoomScale(<#T##scale: CGFloat##CGFloat#>, animated: <#T##Bool#>)
//        scrollView.zoomToRect(<#T##rect: CGRect##CGRect#>, animated: <#T##Bool#>)
        
        //默認(rèn)為true啸箫。如果設(shè)置,當(dāng)手勢起作用時用戶會經(jīng)過最猩∏邸/最大的區(qū)域忘苛,并且,在手勢結(jié)束時這個區(qū)域會自動設(shè)置為最谐稀/最大值扎唾。
        scrollView.bouncesZoom = true
        
        // 當(dāng)用戶向上的手勢時,會返回true
        scrollView.zooming
        
        NSLog("scrollView.zooming>>>>>%zd",scrollView.zooming)
        
        //當(dāng)我們在最小和最大值中間的一個區(qū)域中南缓,會返回true胸遇。
        scrollView.zoomBouncing
        
        //滾動到頂部,默認(rèn)值為true
        scrollView.scrollsToTop = true
        
        //使用這些容器配置scrollView內(nèi)置的手勢識別
        scrollView.panGestureRecognizer
        scrollView.pinchGestureRecognizer
        
        //創(chuàng)建UIPageControl
        let pageControl = UIPageControl(frame: CGRectMake(0, scrollView.frame.size.height-30,200, 30))
        
        //總的圖片頁數(shù)
        pageControl.numberOfPages = 6
        
        //當(dāng)前頁
        pageControl.currentPage = 0
        
        //用戶點(diǎn)擊UIPageControl的響應(yīng)函數(shù)
        pageControl.addTarget(self, action: #selector(pageTurn(_:)), forControlEvents: UIControlEvents.ValueChanged)
        
        //設(shè)置pageControl 的尺寸
        let size = pageControl.sizeForNumberOfPages(6)

//點(diǎn)點(diǎn)的點(diǎn)擊事件
    func pageTurn(pageControl:UIPageControl) {
        
        
    }

    //UIscrollView的協(xié)議代理方法
    //滑動過程中
    func scrollViewDidScroll(scrollView: UIScrollView) {
        
    }
    //開始拖動
    func scrollViewWillBeginDragging(scrollView: UIScrollView) {
        
        
    }
    //開始拖動(以某種速率和偏移量)
    func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
        
    }
    
    //停止拖動
    func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        
    }
    //開始滑動
    func scrollViewWillBeginDecelerating(scrollView: UIScrollView) {
        
    }
    
    //允許縮放的視圖(一個scrollview中只能有一個可以縮放且必須設(shè)置可以縮放的范圍)
//    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
//        
//        //返回被縮放的試圖
//        //return imageView;
//    }
    
    //開始縮放的時候調(diào)用
    func scrollViewWillBeginZooming(scrollView: UIScrollView, withView view: UIView?) {
        
    }
    
    //正在縮放的時候調(diào)用
    func scrollViewDidZoom(scrollView: UIScrollView) {
        
    }
    
    //縮放完畢的時候調(diào)用
    func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) {
        
    }
    
    //將要滾動到頂部的時候調(diào)用
    func scrollViewShouldScrollToTop(scrollView: UIScrollView) -> Bool {
        
        return true
    }
    
    //滾動到頂部的時候調(diào)用
    func scrollViewDidScrollToTop(scrollView: UIScrollView) {
        
    }

UITableView——基本使用

import UIKit

class TableViewController: UIViewController {

    //MARK: -懶加載
    lazy var tableView: UITableView = {
        
        let tableView = UITableView(frame:CGRect(x:0,y:0,width:UIScreen.main.bounds.size.width,height:UIScreen.main.bounds.size.height),style:UITableViewStyle.plain);
        tableView.dataSource = self;
        tableView.delegate = self;
        self.view.addSubview(tableView);
        return tableView;
    }()
    
    lazy var titleArray:[String] = {
        return ["數(shù)據(jù)0","數(shù)據(jù)1","數(shù)據(jù)2","數(shù)據(jù)3","數(shù)據(jù)4","數(shù)據(jù)5","數(shù)據(jù)6","數(shù)據(jù)7","數(shù)據(jù)8","數(shù)據(jù)9","數(shù)據(jù)10","數(shù)據(jù)11"]
    }()
    
    //MARK: -頁面加載
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //實(shí)例化導(dǎo)航條
        self.navigationItem.title = "TableViewController";
        self.view.backgroundColor = UIColor.red;
        self.tableView.backgroundColor = UIColor.yellow;
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

//相當(dāng)于OC里面分類的使用汉形、使代碼結(jié)構(gòu)清晰
extension TableViewController:UITableViewDelegate,UITableViewDataSource{
    // MARK: - UITableViewDelegate
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1;
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return titleArray.count;
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        //第一種創(chuàng)建cell的方式
        let initIdentifer = "Cell";
        var cell = tableView.dequeueReusableCell(withIdentifier: initIdentifer);
        
        if(cell == nil){
            cell = UITableViewCell.init(style: UITableViewCellStyle.subtitle, reuseIdentifier: initIdentifer );
        }
        cell?.textLabel?.text = titleArray[indexPath.row];
        cell?.detailTextLabel?.text = "titleArray\(indexPath.row)";
        cell?.accessoryType = UITableViewCellAccessoryType.disclosureIndicator;
        return cell!;
    }
    
    
    // MARK: - UITableViewDataSource
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 50;
    }
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 20;
    }
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 30;
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {  
      //進(jìn)行cell點(diǎn)擊事件的處理
    }
}

自定義cell

第一種方法:

 let initIdentifer = "Cell";
 var cell = tableView.dequeueReusableCell(withIdentifier: initIdentifer);
 if(cell == nil){
       cell = UITableViewCell.init(style: UITableViewCellStyle.subtitle, reuseIdentifier: initIdentifer );
  }
 cell?.textLabel?.text = titleArray[indexPath.row];
 cell?.detailTextLabel?.text = "titleArray\(indexPath.row)";
 cell?.accessoryType = UITableViewCellAccessoryType.disclosureIndicator;
 return cell!;       

第二種方法:(通過注冊方式)

 self.tableView.register(TableViewCell.self, forCellReuseIdentifier: "TableViewCell");
//類注冊創(chuàng)建cell的方式
 let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath)
 cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator;
 return cell;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纸镊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子概疆,更是在濱河造成了極大的恐慌逗威,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件届案,死亡現(xiàn)場離奇詭異庵楷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)楣颠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門尽纽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人童漩,你說我怎么就攤上這事弄贿。” “怎么了矫膨?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵差凹,是天一觀的道長。 經(jīng)常有香客問我侧馅,道長危尿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任馁痴,我火速辦了婚禮谊娇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘罗晕。我一直安慰自己济欢,他們只是感情好赠堵,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著法褥,像睡著了一般茫叭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上半等,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天揍愁,我揣著相機(jī)與錄音,去河邊找鬼酱鸭。 笑死吗垮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凹髓。 我是一名探鬼主播烁登,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蔚舀!你這毒婦竟也來了饵沧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤赌躺,失蹤者是張志新(化名)和其女友劉穎狼牺,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體礼患,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡是钥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缅叠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悄泥。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖肤粱,靈堂內(nèi)的尸體忽然破棺而出弹囚,到底是詐尸還是另有隱情,我是刑警寧澤领曼,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布鸥鹉,位于F島的核電站,受9級特大地震影響庶骄,放射性物質(zhì)發(fā)生泄漏毁渗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一单刁、第九天 我趴在偏房一處隱蔽的房頂上張望灸异。 院中可真熱鬧,春花似錦、人聲如沸绎狭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽儡嘶。三九已至,卻和暖如春恍风,著一層夾襖步出監(jiān)牢的瞬間蹦狂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工朋贬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凯楔,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓锦募,卻偏偏與公主長得像摆屯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子糠亩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫虐骑、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,024評論 4 62
  • 概述在iOS開發(fā)中UITableView可以說是使用最廣泛的控件赎线,我們平時使用的軟件中到處都可以看到它的影子廷没,類似...
    liudhkk閱讀 8,987評論 3 38
  • 昨日從昆明到大理六個小時的車上看完了這本書。 吳非是我非常敬畏的前輩垂寥。 敬的是他的那種兢兢業(yè)業(yè)的工作態(tài)度。他把教育...
    冰藍(lán)色的太陽閱讀 725評論 0 0
  • 我們都知道做事情要有始有終,就是有開始就要有結(jié)果俊柔,那么以始為終是什么意思呢睛蛛?就是你心中要有一個目標(biāo),然后按著這個目...
    Fine婧婧閱讀 392評論 2 1
  • 踏上列車蓖扑,一路馳騁唉铜,直指心之所向。疾馳而行的列車帶著回鄉(xiāng)的人兒律杠,沖破黑暗無邊的夜幕潭流,迎來黎明的第一縷曙光,映入眼簾...
    憨憨憨霓兒閱讀 356評論 0 0