1.
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle: @"设置头像" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"选择本地图片",@"拍照", nil];
[actionSheet showInView:self.view];
//2.实现相应代理事件,代理UIActionSheetDelegate,方法如下
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex: (NSInteger)buttonIndex {
// 相册 0 拍照 1
switch (buttonIndex) {
case 0:
//从相册中读取
[self readImageFromAlbum];
break;
case 1:
//拍照
[self readImageFromCamera];
break;
default:
break;
}
}
//3.实现从相册读取图片功能,代码如下
//从相册中读取
- (void)readImageFromAlbum {
//创建对象
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
//(选择类型)表示仅仅从相册中选取照片
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
//指定代理,因此我们要实现UIImagePickerControllerDelegate, UINavigationControllerDelegate协议
imagePicker.delegate = self;
//设置在相册选完照片后,是否跳到编辑模式进行图片剪裁。(允许用户编辑)
imagePicker.allowsEditing = YES;
//显示相册
[self presentViewController:imagePicker animated:YES completion:nil];
}
//4.实现拍照功能
- (void)readImageFromCamera {
if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.delegate = self;
imagePicker.allowsEditing = YES;
//允许用户编辑
[self presentViewController:imagePicker animated:YES completion:nil];
} else {
//弹出窗口响应点击事件
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"警告" message:@"未检测到摄像头" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
[alert show];
}
}
//5.图片完成处理后提交,代理方法UIPickerControllerDelegate
//图片完成之后处理
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
//image 就是修改后的照片
//将图片添加到对应的视图上
[_headImageView setImage:image];
//结束操作
[self dismissViewControllerAnimated:YES completion:nil];
}