ios中View.swift和Controller.swift添加上传图片的控件

两者的区别是每个函数的最后一句话

View.swift中添加控件alertController

 func addcerclick() {
        //alertController定义为列表形式(ActionSheet)的弹出
        let alertController = UIAlertController(title: nil, message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet)
        //下面定义了三行
        let albumAction = UIAlertAction(title: "相册", style: .Default) { (action) -> Void in
            self.pickPicture()//闭包实现点击时调用
        }
        let photoAction = UIAlertAction(title: "拍照", style: .Default) { (action) -> Void in
            self.takePicture()
        }
        //类型为style: .Cancel,
        let defaultAction = UIAlertAction(title: LocalizationManager.getStringByKey("Cancel"), style: .Cancel, handler: nil)
        alertController.addAction(albumAction)
        alertController.addAction(photoAction)
        alertController.addAction(defaultAction)
        //var pushVCClick : ((flag:String, vc:UIViewController) -> ())?
        //闭包实现本页面的遮罩,Controller中不能使用该方法
        self.pushVCClick!(flag: "picture",vc: alertController)
    }
    
    // 拍照
    func takePicture()
    {
        //UIImagePickerControllerSourceType.Camera代表的是手机相机
        let sourceType = UIImagePickerControllerSourceType.Camera
        //如果相机可用
        if UIImagePickerController.isSourceTypeAvailable(sourceType)
        {
            //picker代表相机空间
            let picker = UIImagePickerController()
            picker.delegate = self
            picker.allowsEditing = true
            picker.sourceType = sourceType
            
            self.pushVCClick!(flag: "picture",vc: picker)
        }else
        {
            self.pushVCClick!(flag: "没有摄像头",vc: UIViewController())
        }
    }
    
    // 选择图片
    func pickPicture()
    {
        let picker = UIImagePickerController()
        picker.delegate = self
        picker.allowsEditing = true
        picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
        self.pushVCClick!(flag: "picture",vc: picker)
    }
    
    // 图像选择后,系统的回调方法
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        
        let type: AnyObject? = info["UIImagePickerControllerMediaType"]
        // 照片
        if type!.isEqualToString("public.image")
        {
            var image = info["UIImagePickerControllerEditedImage"] as! UIImage
            if UIImageJPEGRepresentation(image, 1) != nil
            {

                    image = UtilityFromOC.fixOrientation(image)

                    var nsdataforimage = UIImageJPEGRepresentation(image, 1)!

                    //将图片压缩

                      while nsdataforimage.length/1024 > 100{

                          nsdataforimage = UIImageJPEGRepresentation(image,0.1)!;

                        // 压缩比例在0~1之间

                    }

 

                  //NSData 类型转 String 类型

                  let str:String = nsdataforimage.base64EncodedStringWithOptions(.Encoding64CharacterLineLength )

     

//              String 类型转NSData 类型

//              let nsdataforimage1 : NSData = str.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!

                image = UIImage(data: nsdataforimage)!

                //展示图片到页面,var picimg = UIImage(named: "add_cer_icon")

                picimg = image

                tableView.reloadData()

            }
        }
        // 这一步之后将调用view did appear事件
        picker.dismissViewControllerAnimated(true, completion: nil)
    }

Controller.swift中添加控件alertController

  func addcerclick() {
        //alertController定义为列表形式(ActionSheet)的弹出
        let alertController = UIAlertController(title: nil, message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet)
        //下面定义了三行
        let albumAction = UIAlertAction(title: "相册", style: .Default) { (action) -> Void in
            self.pickPicture()//闭包实现点击时调用
        }
        let photoAction = UIAlertAction(title: "拍照", style: .Default) { (action) -> Void in
            self.takePicture()
        }
        //类型为style: .Cancel,
        let defaultAction = UIAlertAction(title: LocalizationManager.getStringByKey("Cancel"), style: .Cancel, handler: nil)
        alertController.addAction(albumAction)
        alertController.addAction(photoAction)
        alertController.addAction(defaultAction)
        print("进入遮罩")
        
        //实现本页面的遮罩
        self.presentViewController(alertController, animated: true, completion: nil)
    }
    
    // 拍照
    func takePicture()
    {
        //UIImagePickerControllerSourceType.Camera代表的是手机相机
        let sourceType = UIImagePickerControllerSourceType.Camera
        //如果相机可用
        if UIImagePickerController.isSourceTypeAvailable(sourceType)
        {
            //picker代表相机空间
            let picker = UIImagePickerController()
            picker.delegate = self
            picker.allowsEditing = true
            picker.sourceType = sourceType
            
            //self.pushVCClick!(flag: "picture",vc: picker)
            self.presentViewController(picker, animated: true, completion: nil)
        }else
        {
            //self.pushVCClick!(flag: "没有摄像头",vc: UIViewController())
            SimpleAlert("没有摄像头", container: self)
        }
    }
    
    // 选择图片
    func pickPicture()
    {
        let picker = UIImagePickerController()
        picker.delegate = self
        picker.allowsEditing = true
        picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
        //self.pushVCClick!(flag: "picture",vc: picker)
        self.presentViewController(picker, animated: true, completion: nil)
    }
    
    // 图像选择后,系统的回调方法
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        
        let type: AnyObject? = info["UIImagePickerControllerMediaType"]
        // 照片
        if type!.isEqualToString("public.image")
        {
            var image = info["UIImagePickerControllerEditedImage"] as! UIImage
            if UIImageJPEGRepresentation(image, 0.2) != nil
            {
                image = UtilityFromOC.fixOrientation(image)
                let nsdataforimage = UIImageJPEGRepresentation(image, 0.2)!
                image = UIImage(data: nsdataforimage)!
                saveAvatarImage(image,filename: "user_avatar")
                //展示图片到页面,var picimg = UIImage(named: "add_cer_icon")
                picimg = image
                //添加后的重新加载,
                headImageView.image=picimg
               
            }
        }
        // 这一步之后将调用view did appear事件
        picker.dismissViewControllerAnimated(true, completion: nil)
    }

 

posted @ 2017-06-02 16:19  牛郑焜  Views(824)  Comments(0Edit  收藏  举报