您的位置:首页 > 移动开发 > IOS开发

iOS中选择相册照片添加到应用程序中

2016-03-07 17:47 393 查看
例如QQ、微信等的说说,评论等功能需要调用手机相册添加并发表图片。

再此就简单的介绍一下如何从相册中添加图片。

1、首先创建调用相册的按钮,再次是给UIImageView添加点击手势来实现。



self.tupianImageview = [[UIImageView alloc]initWithFrame:CGRectMake(SCREEN_WIDTH-69, 50, 20, 20)];
self.tupianImageview.image = [UIImage imageNamed:@"muzhi_tupian_1"];
self.tupianImageview.tag = 21;
[self.view addSubview:self.tupianImageview];

self.tupianImageview.userInteractionEnabled = YES;
UITapGestureRecognizer * PicTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(addPic:)];
PicTap.delegate = self;
[self.tupianImageview addGestureRecognizer:PicTap];


2、实现点击手势的响应方法

这里添加一个提示框,提示选择是拍照(目前没有做,提示框中不显示)还是从相册选择照片。



-(void)addPic:(UITapGestureRecognizer *)tap{
if (IOS8) {
UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"获取图片" message:nil preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction * defaultActionPic = [UIAlertAction actionWithTitle:@"相册" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
ZZPhotoController *photoController = [[ZZPhotoController alloc]init];
photoController.selectPhotoOfMax = 4;
[photoController showIn:self result:^(id responseObject){
NSArray *array = (NSArray *)responseObject;
//  NSLog(@"-------------------%@",responseObject);
//  [self.imagePickerArray addObjectsFromArray:array];

self.imagePickerArray = [NSMutableArray arrayWithArray:array];

[self addbottomImage];
}];
}];
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){
UIAlertAction * defaultActionCamer = [UIAlertAction actionWithTitle:@"相机" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
ZZCameraController *cameraController = [[ZZCameraController alloc]init];
cameraController.takePhotoOfMax = 4;
cameraController.isSaveLocal = NO;
[cameraController showIn:self result:^(id responseObject){
//  NSLog(@"%@",responseObject);
NSArray *array = (NSArray *)responseObject;
[self.imagePickerArray addObjectsFromArray:array];

[self addbottomImage];
}];
}];
[alert addAction:defaultActionCamer];

}
UIAlertAction * cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {

}];
[alert addAction:cancelAction];
[alert addAction:defaultActionPic];
[self presentViewController:alert animated:YES completion:nil];

}
else{
UIActionSheet * sheet;
//判断是否支持相机
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
sheet =[ [UIActionSheet alloc]initWithTitle:@"获取图片" delegate:self cancelButtonTitle:nil destructiveButtonTitle:@"取消" otherButtonTitles:@"相机",@"相册", nil];
}else{
sheet = [[UIActionSheet alloc]initWithTitle:@"获取图片" delegate:self cancelButtonTitle:nil destructiveButtonTitle:@"取消" otherButtonTitles:@"相册", nil];
}
[sheet showInView:self.view];
}
}


判断的是iOS系统版本

#define IOS8 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0 ? YES : NO)




3、实现选择方法

#import <Foundation/Foundation.h>
#import "Common.h"

typedef void(^ZZCameraResult)(id responseObject);

@interface ZZCameraController : NSObject

@property (assign, nonatomic) BOOL isSaveLocal;

/*
*   设置最多连拍张数
*/
@property (assign, nonatomic) NSInteger takePhotoOfMax;

/*
*    设置图片返回类型
*/
@property (assign, nonatomic) ZZImageType imageType;

-(void)showIn:(UIViewController *)controller result:(ZZCameraResult)result;

@end


#import "ZZCameraController.h"
#import "ZZCameraPickerViewController.h"
@interface ZZCameraController()

@property (strong,nonatomic) ZZCameraPickerViewController *cameraPickerController;

@end

@implementation ZZCameraController

-(ZZCameraPickerViewController *)cameraPickerController
{
if (!_cameraPickerController) {
_cameraPickerController = [[ZZCameraPickerViewController alloc]init];
}
return _cameraPickerCon
cca4
troller;
}

-(void)showIn:(UIViewController *)controller result:(ZZCameraResult)result
{
self.cameraPickerController.CameraResult = result;
//设置连拍最大张数
self.cameraPickerController.takePhotoOfMax = self.takePhotoOfMax;
//设置返回图片类型
self.cameraPickerController.imageType = self.imageType;
self.cameraPickerController.isSavelocal = self.isSaveLocal;
[controller presentViewController:self.cameraPickerController animated:YES completion:nil];
}

@end


拍照的后续会发布。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios uiimageview 相册