加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift 头像上传(2)

发布时间:2020-12-14 06:43:54 所属栏目:百科 来源:网络整理
导读:今天接着Swift头像上传(1)继续学习 实现效果:点击相册,打开相册 首先需要实现两个协议 UIImagePickerControllerDelegate , UINavigationControllerDelegate实现加载和读取相册的功能 //从本地获取 func localImage(){ if UIImagePickerController.isSour

今天接着Swift头像上传(1)继续学习

实现效果:点击相册,打开相册

首先需要实现两个协议UIImagePickerControllerDelegate,UINavigationControllerDelegate实现加载和读取相册的功能


//从本地获取
    func localImage(){
        
        if UIImagePickerController.isSourceTypeAvailable(.PhotoLibrary){
        self.imagePickerController = UIImagePickerController()
        self.imagePickerController.delegate = self
        self.imagePickerController.allowsEditing = true//允许用户裁剪移动缩放
        self.imagePickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary//设置图片来源为图库
        //设置图片拾取器导航条的前景色
        self.imagePickerController.navigationBar.barTintColor = UIColor.orangeColor()
       //设置图片拾取器标题颜色为白色
        self.imagePickerController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
        //设置导航条的着色颜色为白色
        self.imagePickerController.navigationBar.tintColor = UIColor.whiteColor()
   //在当前视图控制器窗口展示图片拾取器
        self.presentViewController(self.imagePickerController,animated: true,completion : nil )
        }else{
        print("读取相册失败")
        }
    }
    
    //打开相机获取
    func openCamera(){
        if UIImagePickerController.isSourceTypeAvailable(.Camera) {
            self.imagePickerController = UIImagePickerController()
            self.imagePickerController.delegate = self
            self.imagePickerController.allowsEditing = true//允许用户裁剪移动缩放
            self.imagePickerController.sourceType = UIImagePickerControllerSourceType.Camera//设置图片来源为相机
            //设置图片拾取器导航条的前景色
            self.imagePickerController.navigationBar.barTintColor = UIColor.orangeColor()
            //设置图片拾取器标题颜色为白色
            self.imagePickerController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
            //设置导航条的着色颜色为白色
            self.imagePickerController.navigationBar.tintColor = UIColor.whiteColor()
            //在当前视图控制器窗口展示图片拾取器
            self.presentViewController(self.imagePickerController,completion : nil )
        
        }else{
        
          print("相机不可用,您可能使用的是模拟器,请切换到真机调试")
        }
    }
    
     //添加代理方法,用于执行图片拾取完成后的代码
    func imagePickerController(picker: UIImagePickerController,didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        //判断是否允许裁剪
        if(picker.allowsEditing){
            //裁剪后图片
            self.imageview.image = info["UIImagePickerControllerEditedImage"]as? UIImage
        }else{
            //原始图片
            self.imageview.image = info["UIImagePickerControllerOriginalImage"]as? UIImage
        }
        
        self.dismissViewControllerAnimated(true,completion: nil )
    
    }
   
    
//添加代理方法,执行用户取消的代码
    func imagePickerControllerDidCancel(picker: UIImagePickerController) {
        //隐藏图片拾取器
        self.dismissViewControllerAnimated(true,completion: nil )
    }

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


上面的拍照和本地获取,代码有很多相同的地方,可以优化一下:优化思路,把两个方法合为一个。利用传递参数的方式把获取图片来源传递进来。

把判断相机是否能用,图库是否能打开的条件判断语句放在调用改方法的地方。

下次把优化过的代码贴出来,这次就不贴了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读