Swift快速集成控件篇(图片选择)

1.实现简单流程图 (看图)

Swift快速集成控件篇(图片选择)_第1张图片
5F838B09E1633D5045EDC72D53F45E43.png

2.在来看看我们简单的代码列表 (如何获取系统图片可以下载代码来看)

Swift快速集成控件篇(图片选择)_第2张图片
2466883F-C510-4BE2-8CFA-A6EDDC6058ED.png

3.显示到控件(UICollectionview)

    
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! VFisrstCollectionViewCell
        
        //取缩略图
        let myAsset = assets[indexPath.row]
        //– thumbnail(小正方形的缩略图)
        //– aspectRatioThumbnail(按原始资源长宽比例的缩略图)
        cell.showImage!.image =
            UIImage(CGImage: myAsset.thumbnail().takeUnretainedValue())
        
        if(IsSelecetdMultiple==true){   //可以多选
            cell.SelectedPic!.hidden=false
            cell.SelectedPic!.addTarget(self, action: #selector(PictrueSelectedViewController.SelectedPic(_:)), forControlEvents: .TouchUpInside)
            cell.SelectedPic!.tag=indexPath.row
            
            //检查选选中和不选中(如果选中一个打钩,滑动的时候会默认一个index所以每次重写加载cell的时候
            //必须把所有当前看到的图片全部为未选中,如果当前index有选中的tag标识则改成选中状态
            if(CheckItem.containsObject(indexPath.row)){ //检查当前存储的tag标识
                cell.SelectedPic!.setImage(UIImage(named: SelectedCheckImg), forState: .Normal)  //选中
            }
            else{
                cell.SelectedPic!.setImage(UIImage(named: NoCheckImg), forState: .Normal)  //不选中
            }
            
        }else{  //单选
            cell.SelectedPic!.hidden=true
        }
        
        return cell
    }

4.图片选择,并且返回所选图片


    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
        //点击大图
        let myAsset = assets[indexPath.row]
        //获取文件名
        let representation =  myAsset.defaultRepresentation()
        //备注说明:如果使用模拟器调试会造成内存泄漏(检测工具:Instruments) 真机不会泄漏
        let img = UIImage(CGImage:representation.fullResolutionImage().takeUnretainedValue())  //原图 ( 没经过像素压缩处理的
        let vc =  ShowImageViewController()
        vc.title=representation.filename() //图片名称
        vc.image=img
        vc.IsSelecetdMultiple=self.IsSelecetdMultiple
        vc.Callback_SelectedValue { (value) -> Void in
            
            if(self.myCallbackValue != nil){
                var imglist=[UIImage]()
                imglist.append(value)
                self.myCallbackValue!(value:imglist)
                self.navigationController?.popViewControllerAnimated(true)
            }
        }
        self.navigationController?.pushViewController(vc, animated: true)
        
    }

我们来看看如何调用该类库:

//第一个参数是单选还是多选,true表示多选,第二参数是必包回调选择图片数据
        let vc = PictrueSelectedViewController(IsSelecetdMultiple: true) { (value) in
           //返回的是一个[UIImage]对象 
            print(value[0]) //选图1 
        }
        self.navigationController?.pushViewController(vc, animated: true)

看看我们的功能

Swift快速集成控件篇(图片选择)_第3张图片
图片选择.gif

如需代码,请移动到--->http://www.jianshu.com/p/0f950c180cb8

你可能感兴趣的:(Swift快速集成控件篇(图片选择))