相册选择照片或拍照(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)
  }
}

你可能感兴趣的:(相册选择照片或拍照(Swift))