美文网首页征服Swift
相册选择照片或拍照(Swift)

相册选择照片或拍照(Swift)

作者: 断忆残缘 | 来源:发表于2016-07-18 19:14 被阅读1266次

    今天又做了从相册选择照片或者拍照,好久不做了。有些淡忘,去网上找了,有些凌乱,所以决定自己稍稍整理下。

    1.判断相机是否可用,如果可用就有拍照选项,反正则没有。
    
    let actionSheet: UIActionSheet
        // 判断相机是否可用
        if UIImagePickerController.isSourceTypeAvailable(.Camera) {
          actionSheet = UIActionSheet(title: "请选择头像来源", delegate: self,
                                      cancelButtonTitle: "取消", destructiveButtonTitle: nil,
                                      otherButtonTitles: "从相册选择", "拍照")
        } else {
          actionSheet = UIActionSheet(title: "请选择头像来源", delegate: self,
                                      cancelButtonTitle: "取消", destructiveButtonTitle: nil,
                                      otherButtonTitles: "从相册选择")
        }
        actionSheet.showInView(view)
    
    2.实现UIActionSheetDelegate,判断所选择的项
    
    // MARK: - UIActionSheetDelegate
    extension AccountViewController: UIActionSheetDelegate {
      func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int) {
        print(buttonIndex)
        var sourceType: UIImagePickerControllerSourceType = .PhotoLibrary
        switch buttonIndex {
        case 1: // 从相册选择
          sourceType = .PhotoLibrary
        case 2: // 拍照
          sourceType = .Camera
        default:
          return
        }
        let pickerVC = UIImagePickerController()
        pickerVC.view.backgroundColor = UIColor.whiteColor()
        pickerVC.delegate = self
        pickerVC.allowsEditing = true
        pickerVC.sourceType = sourceType
        presentViewController(pickerVC, animated: true, completion: nil)
      }
    }
    
    3.分别对确定和取消事件做处理
    // MARK: - UIImagePickerControllerDelegate、UINavigationControllerDelegate
    extension AccountViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
      func imagePickerController(picker: UIImagePickerController,
                                 didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        dismissViewControllerAnimated(true, completion: nil)
        if let image = info[UIImagePickerControllerEditedImage] as? UIImage {
          headerView.setHeadImage(image)
        }
      }
      func imagePickerControllerDidCancel(picker: UIImagePickerController) {
        dismissViewControllerAnimated(true, completion: nil)
      }
    }
    

    相关文章

      网友评论

        本文标题:相册选择照片或拍照(Swift)

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