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

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

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)
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容