ios照片获取、拍照功能
来源:互联网 发布:英语口语评分软件 编辑:程序博客网 时间:2024/05/01 05:43
//// HYBPhotoPickerManager.h// ehui//// Created by 黄仪标 on 14/11/26.// Copyright (c) 2014年 黄仪标. All rights reserved.//#import <Foundation/Foundation.h>/*! * @brief 照片获取或者拍照功能管理器 * @author huangyibiao */@interface HYBPhotoPickerManager : NSObject + (HYBPhotoPickerManager *)shared;/*! * @brief 选择图片或者拍照完成选择使用拍照的图片后,会调用此block * @param image 选择的图片或者拍照后选择使用的图片 */typedef void (^HYBPickerCompelitionBlock)(UIImage *image);/*! * @brief 用户点击取消时的回调block */typedef void (^HYBPickerCancelBlock)();/*! * @brief 此方法为调起选择图片或者拍照的入口,当选择图片或者拍照后选择使用图片后,回调completion, * 当用户点击取消后,回调cancelBlock * @param inView UIActionSheet呈现到inView这个视图上 * @param fromController 用于呈现UIImagePickerController的控制器 * @param completion 当选择图片或者拍照后选择使用图片后,回调completion * @param cancelBlock 当用户点击取消后,回调cancelBlock */- (void)showActionSheetInView:(UIView *)inView fromController:(UIViewController *)fromController completion:(HYBPickerCompelitionBlock)completion cancelBlock:(HYBPickerCancelBlock)cancelBlock;@end
//// HYBPhotoPickerManager.m// ehui//// Created by 黄仪标 on 14/11/26.// Copyright (c) 2014年 黄仪标. All rights reserved.//#import "HYBPhotoPickerManager.h"#import "UIImagePickerController+Photo.h"#import "UIImage+DSResizeAndRound.h"@interface HYBPhotoPickerManager () <UIImagePickerControllerDelegate,UINavigationControllerDelegate,UIActionSheetDelegate>@property (nonatomic, weak) UIViewController *fromController;@property (nonatomic, copy) HYBPickerCompelitionBlock completion;@property (nonatomic, copy) HYBPickerCancelBlock cancelBlock;@end@implementation HYBPhotoPickerManager+ (HYBPhotoPickerManager *)shared { static HYBPhotoPickerManager *sharedObject = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ if (!sharedObject) { sharedObject = [[[self class] alloc] init]; } }); return sharedObject;}- (void)showActionSheetInView:(UIView *)inView fromController:(UIViewController *)fromController completion:(HYBPickerCompelitionBlock)completion cancelBlock:(HYBPickerCancelBlock)cancelBlock { self.completion = [completion copy]; self.cancelBlock = [cancelBlock copy]; self.fromController = fromController; dispatch_async(kGlobalThread, ^{ UIActionSheet *actionSheet = nil; if ([UIImagePickerController isCameraAvailable]) { actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:(id<UIActionSheetDelegate>)self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"从相册选择", @"拍照上传", nil]; } else { actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:(id<UIActionSheetDelegate>)self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"从相册选择", nil]; } dispatch_async(kMainThread, ^{ [actionSheet showInView:inView]; }); }); return;}#pragma mark - UIActionSheetDelegate- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == 0) { // 从相册选择 if ([UIImagePickerController isPhotoLibraryAvailable]) { UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.delegate = self; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; picker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:picker.sourceType]; if (kIsIOS7OrLater) { picker.navigationBar.barTintColor = self.fromController.navigationController.navigationBar.barTintColor; } // 设置导航默认标题的颜色及字体大小 picker.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor], NSFontAttributeName : [UIFont boldSystemFontOfSize:18]}; [self.fromController presentViewController:picker animated:YES completion:nil]; } } else if (buttonIndex == 1) { // 拍照 if ([UIImagePickerController canTakePhoto]) { UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.delegate = self; picker.sourceType = UIImagePickerControllerSourceTypeCamera; picker.delegate = self; if (kIsIOS7OrLater) { picker.navigationBar.barTintColor = self.fromController.navigationController.navigationBar.barTintColor; } // 设置导航默认标题的颜色及字体大小 picker.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor], NSFontAttributeName : [UIFont boldSystemFontOfSize:18]}; [self.fromController presentViewController:picker animated:YES completion:nil]; } } return;}#pragma mark - UIImagePickerControllerDelegate// 选择了图片或者拍照了- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info { [aPicker dismissViewControllerAnimated:YES completion:nil]; __block UIImage *image = [info valueForKey:UIImagePickerControllerOriginalImage]; if (image && self.completion) { [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; [self.fromController setNeedsStatusBarAppearanceUpdate]; dispatch_async(kGlobalThread, ^{ image = [image imageResizedToSize:CGSizeMake(kScreenWidth / 2.0, kScreenHeight / 2.0)]; DDLogVerbose(@"image size : %@", NSStringFromCGSize(image.size)); dispatch_async(kMainThread, ^{ self.completion(image); }); }); } return;}// 取消- (void)imagePickerControllerDidCancel:(UIImagePickerController *)aPicker { [aPicker dismissViewControllerAnimated:YES completion:nil]; if (self.cancelBlock) { [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; [self.fromController setNeedsStatusBarAppearanceUpdate]; self.cancelBlock(); } return;}@end
1 4
- ios照片获取、拍照功能
- iOS 上传照片到服务器 获取相册和拍照功能的照片 照片压缩上传
- IOS 获取系统照片和拍照
- 拍照,选择照片功能
- iOS 拍照和相册获取照片封装UIImagePickerController
- 获取相册照片和获取拍照照片
- iOS 拍照及获取相册图片功能
- iOS 相机拍照、相册获取照片(仿微信) 一一 拍照、图片裁剪
- iOS 相机拍照、相册获取照片(仿微信) 一一 从相册获取图片、图片裁剪
- Android从本地获取照片以及调用手机拍照功能的方法
- 拍照、选择照片功能的实现
- Android开发之获取相册照片和获取拍照照片
- Android:获取相册照片和获取拍照照片
- Android开发之获取相册照片和获取拍照照片
- Android开发之获取相册照片和获取拍照照片
- Android开发之获取相册照片和获取拍照照片
- Android开发之获取相册照片和获取拍照照片
- Android开发之获取相册照片和获取拍照照片
- 条款 36: 区分接口继承和实现继承
- assign、retain和copy的区别
- 三大框架(SSH)好处?
- 反渗透设备:反渗透纯水机核心工作原理概述
- iOS 内购 分享
- ios照片获取、拍照功能
- ZigZag Conversion
- Android如何支持多种屏幕
- 第十七周项目1-体会函数参数传递
- Java面试题
- Sql Server 计算某个字符 在字符串中有多少
- AndroidUI 开发常用颜色
- Android:adb 常见命令
- EndNote 问题汇总