java多线程    Java入门    vsftp    ftp    linux配置    centos    FRP教程    HBase    Html5缓存    webp    zabbix    分布式    neo4j图数据库    

swift图片多选,取消选择模型

以下代码未完全实现多选功能,仅仅为中间过程,作为自己复习使用。因为经过优化的代码,最终会忘记中间的过程。
读取本地图片,然后列出,然后可以多选,可以取消选择

//
//  ViewController.swift
//  imageTest
//
//  Created by  on 15/11/30.
//  Copyright (c) 2015年 JS. All rights reserved.
//

import UIKit
import AssetsLibrary

class ViewController: UIViewController {
    //资源库管理类
    var assetsLibrary =  ALAssetsLibrary()
    //保存照片集合
    var assets = [ALAsset]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        var countOne = 0
        
        var qix = 0;
        
        
        let registerBtn : UIButton = UIButton()
        registerBtn.frame = CGRectMake(10, 200, 300, 40)
        registerBtn.backgroundColor = UIColor.lightGrayColor()
        registerBtn.setTitle("注册", forState: UIControlState.Normal)
        registerBtn.addTarget(self, action: "goRegister:", forControlEvents: UIControlEvents.TouchUpInside)
        self.view.addSubview(registerBtn)
        
        
        //被读取的数据, 当前函数内无法读取到asset的数据,必须有另外一个动作触发,所以弄了个按钮,下一步动作
        //ALAssetsGroupSavedPhotos表示只读取相机胶卷(ALAssetsGroupAll则读取全部相簿)
        assetsLibrary.enumerateGroupsWithTypes(ALAssetsGroupSavedPhotos, usingBlock: {
            (group: ALAssetsGroup!, stop) in
            print("is goin:")
            if group != nil
            {
                let assetBlock : ALAssetsGroupEnumerationResultsBlock = {
                    (result: ALAsset!, index: Int, stop) in
                    if result != nil
                    {
                        
                        self.assets.append(result)//装载图片
                        qix = countOne%6;

                        var pos_x:CGFloat = CGFloat(10 + Int(qix*55) );
                        var pos_y:CGFloat = CGFloat(40 + Int(countOne/6 * 55));
                        
                        //取缩略图
                        let image = UIImage(CGImage:result.thumbnail().takeUnretainedValue())
                        var imageView = UIImageView(frame: CGRectMake(pos_x, pos_y, 50, 50))
                        imageView.image = image
                        imageView.userInteractionEnabled = true;//点击手势
                        var singleTap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "imageViewTouch:")
                        imageView .addGestureRecognizer(singleTap)
                        imageView.tag = countOne
                        
                        //边框颜色设置
                        imageView.layer.borderColor = UIColor.grayColor().CGColor
                        //边框的宽度设置
                        imageView.layer.borderWidth = 1
                        // 最主要的一句
                        imageView.layer.masksToBounds = true
                        //把uiimageview加载到父控件上,也就是self.view
                        self.view.addSubview(imageView)

                        
                        qix++
                        countOne++
                       
                    }
                }
                
                
                group.enumerateAssetsUsingBlock(assetBlock)
                print("assets:\(countOne)")
                //collectionView网格重载数据
                //self.collectionView?.reloadData()
                println("======");
            }
           
            }, failureBlock: { (fail) in
                print(fail)
        })
        
    }
    
    func imageViewTouch(gestur:UITapGestureRecognizer){
        println("我被摸了!!");
        let x = gestur.view?.tag

        print(assets[x!])
        
        let countOne = x //还原countOne
        var qix = countOne!%6;
        
        var pos_x:CGFloat = CGFloat(10 + Int(qix*55) );
        var pos_y:CGFloat = CGFloat(40 + Int(countOne!/6 * 55));
        
        let image = UIImage(CGImage:assets[x!].thumbnail().takeUnretainedValue())
        var imageView = UIImageView(frame: CGRectMake(pos_x, pos_y, 50, 50))
        imageView.image = image
        
        imageView.userInteractionEnabled = true;//点击手势
        var singleTap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "imageViewTouch2:")
        imageView .addGestureRecognizer(singleTap)
        imageView.tag = countOne!
        
        //边框颜色设置
        imageView.layer.borderColor = UIColor.redColor().CGColor
        //边框的宽度设置
        imageView.layer.borderWidth = 1
        // 最主要的一句
        imageView.layer.masksToBounds = true
        //把uiimageview加载到父控件上,也就是self.view
        self.view.addSubview(imageView)
        
    }
    
    //取消摸
    func imageViewTouch2(gestur:UITapGestureRecognizer){
        println("我被摸了!!");
        let x = gestur.view?.tag
        
        print(assets[x!])
        
        let countOne = x //还原countOne
        var qix = countOne!%6;
        
        var pos_x:CGFloat = CGFloat(10 + Int(qix*55) );
        var pos_y:CGFloat = CGFloat(40 + Int(countOne!/6 * 55));
        
        let image = UIImage(CGImage:assets[x!].thumbnail().takeUnretainedValue())
        var imageView = UIImageView(frame: CGRectMake(pos_x, pos_y, 50, 50))
        imageView.image = image
        
        imageView.userInteractionEnabled = true;//点击手势
        var singleTap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "imageViewTouch:")
        imageView .addGestureRecognizer(singleTap)
        imageView.tag = countOne!
        
        //边框颜色设置
        imageView.layer.borderColor = UIColor.grayColor().CGColor
        //边框的宽度设置
        imageView.layer.borderWidth = 1
        // 最主要的一句
        imageView.layer.masksToBounds = true
        //把uiimageview加载到父控件上,也就是self.view
        self.view.addSubview(imageView)
        
    }
    
    
    
    @IBAction func goRegister(sender: AnyObject) {
    
        //展示图片列表
        var count = assets.count;
        
        for var index = 0; index < count; ++index {
            println("index is \(index)")
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

更加简洁的办法是我们将imageView存入一个数组,然后利用这个数组来改变图片选择情况
var imgs = [UIImageView]()

//点击,边框变红色
    func imageViewTouchArr(gestur:UITapGestureRecognizer){
        let x = gestur.view?.tag
        var imageView = imgs[x!]
        var singleTap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "imageViewTouchArrCancel:")
        imageView .addGestureRecognizer(singleTap)
        imageView.layer.borderColor = UIColor.redColor().CGColor
    }
    //点击取消边框
    func imageViewTouchArrCancel(gestur:UITapGestureRecognizer){
        let x = gestur.view?.tag
        var imageView = imgs[x!]
        var singleTap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "imageViewTouchArr:")
        imageView .addGestureRecognizer(singleTap)
        imageView.layer.borderColor = UIColor.grayColor().CGColor
    }


This entry was posted in Xcode and tagged , , . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/swift-select-many-cacel/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.

Leave a Reply