KRNImagePickerController
KRNImagePickerController 是建立在 UIImagePickerController 之上的包装器,用于简化其使用。
## 安装
- 将
KRNImagePickerController/KRNImagePickerController
文件夹拖到您的项目中。 - 在合适的地方导入
#import "KRNImagePickerController.h"
。或者使用 pod 'KRNImagePickerController'。
## 使用
(请参考位于 /KRNImagePickerController
中的示例 Xcode 项目)
选择图像
要选择图像,只需使用以下方法,无需创建任何 UIImagePickerController 实例,实现 UIImagePickerDelegate 协议,写委托方法等。
+ (void)pickFromSource:(UIImagePickerControllerSourceType)sourceType fromViewController:(UIViewController *)viewController withCompletion:(KRNImagePickerCompletionWithImage)completion;
- sourceType - 指的是您想要选择的图像的来源类型(UIImagePickerControllerSourceTypePhotoLibrary、UIImagePickerControllerSourceTypeCamera 或 UIImagePickerControllerSourceTypeSavedPhotosAlbum)。
- viewController - 是 UIViewController 的实例,其中 UIImagePickerController 将从中显示
- completion - 是一个在选择图像后或发生错误时被调用的块。
例如,如果您在 ViewController 中有一个 UIImageView 实例,并且您想为该 UIImageView 实例选择 UIImage,您可以很容易地使用上面的方法
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
...
__weak typeof (self) weakSelf = self;
[KRNImagePickerController pickFromSource:UIImagePickerControllerSourceTypePhotoLibrary
fromViewController:self
withCompletion:^(UIImage *image, NSError *error) {
if (!error) {
weakSelf.imageView.image = image;
} else {
if (error.code == KRNImagePickerOperationIsCancelled) return; // cancelation of operation is also considered to be an error so you may just return here
// handle the error
}
}];
为了简化,操作取消也被视为错误。如果用户取消了选择操作,completion 块中将传递 KRNImagePickerOperationIsCancelled 错误,您可以根据需要处理并执行适当的操作。
方便的方法
如果您确定需要哪种来源,可以使用带有预选来源的方便方法之一。
// from Photo Library
+ (void)pickFromPhotoLibraryFromViewController:(UIViewController *) viewController withCompletion:(KRNImagePickerCompletionWithImage)completion;
// from Camera
+ (void)pickFromCameraFromViewController:(UIViewController *) viewController withCompletion:(KRNImagePickerCompletionWithImage)completion;
// from Saved photos album
+ (void)pickFromSavedPhotosAlbumFromViewController:(UIViewController *) viewController withCompletion:(KRNImagePickerCompletionWithImage)completion;
映射到UIImageView
KRNImagePickerController 允许您将选择的图片映射到 UIImageView 实例的 "image" 属性。您可以使用以下方法进行映射:
+ (void) pickFromSource:(UIImagePickerControllerSourceType)sourceType fromViewController:(UIViewController *)viewController andMapToImageView:(UIImageView *)imageView withSucceed:(KRNImagePickerSucceedBlock)succeed;
示例
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
...
__weak typeof (self) weakSelf = self;
[KRNImagePickerController pickFromSource:UIImagePickerControllerSourceTypePhotoLibrary fromViewController:self andMapToImageView:weakSelf.imageView withSucceed:^(NSError *error) {
if (error) {
if (error.code == KRNImagePickerOperationIsCancelled) return;
//handle error here
}
}];
便捷方法
还有一些便捷的方法,您可以使用它们将选择的图片映射到 UIImageView 实例。
// from Photo Library
+ (void)pickFromPhotoLibraryFromViewController:(UIViewController *) viewController andMapToImageView:(UIImageView*)imageView withSucceed:(KRNImagePickerSucceedBlock)succeed;
// from Camera
+ (void)pickFromCameraFromViewController:(UIViewController *) viewController andMapToImageView:(UIImageView*)imageView withSucceed:(KRNImagePickerSucceedBlock)succeed;
// from Saved photos album
+ (void)pickFromSavedPhotosAlbumFromViewController:(UIViewController *) viewController andMapToImageView:(UIImageView*)imageView withSucceed:(KRNImagePickerSucceedBlock)succeed;
要求
- iOS 8.0及以上
- XCode 6+
许可
KRNImagePickerController 在 MIT 许可下发布。参阅 LICENSE 以获取详细信息。
联系
有任何建议或问题?请创建 Github 问题或联系我。