美文网首页
Swift学习笔记7-UIScrollView、UITableV

Swift学习笔记7-UIScrollView、UITableV

作者: Simple_Code | 来源:发表于2017-07-18 10:26 被阅读160次

    UIScrollView——基本使用

    //创建滚动视图
            let scrollView = UIScrollView()
            
            //设置尺寸
            scrollView.frame = CGRect(x: 0, y: 0, width: 375, height: 60);
            
            //设置背景色
            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) {
            
        }
    

    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 ["数据0","数据1","数据2","数据3","数据4","数据5","数据6","数据7","数据8","数据9","数据10","数据11"]
        }()
        
        //MARK: -页面加载
        override func viewDidLoad() {
            super.viewDidLoad()
            
            //实例化导航条
            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.
        }
    }
    
    //相当于OC里面分类的使用、使代码结构清晰
    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 {
            
            //第一种创建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) {  
          //进行cell点击事件的处理
        }
    }
    

    自定义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");
    //类注册创建cell的方式
     let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath)
     cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator;
     return cell;
    
    

    相关文章

      网友评论

          本文标题:Swift学习笔记7-UIScrollView、UITableV

          本文链接:https://www.haomeiwen.com/subject/kiqxkxtx.html