分类: iOS-UI系列(17)
版权声明:本文为博主原创文章,未经博主允许不得转载。
功能如下:
1.点击头像,提示选择更换头像方式①相册 ②照相.
2.点击相册,实现通过读取系统相册,获取图片进行替换.
3.点击照相,通过摄像头照相,进行替换照片.
4.如果摄像头,弹出框警告.
代码如下:
1.通过UIActionSheet对象实现提示功能
[objc] view plain copy print?在CODE上查看代码片派生到我的代码片
//创建对象
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:
@"提示" delegate:self cancelButtonTitle:@"取消"
destructiveButtonTitle:nil otherButtonTitles:@"相册",@"拍照", nil nil];
//在视图上展示
[actionSheet showInView:self.view];
[actionSheet release];
2.实现相应代理事件,代理UIActionSheetDelegate,方法如下
[objc] view plain copy print?在CODE上查看代码片派生到我的代码片
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:
(NSInteger)buttonIndex {
// 相册 0 拍照 1
switch (buttonIndex) {
case 0:
//从相册中读取
[self readImageFromAlbum];
break;
case 1:
//拍照
[self readImageFromCamera];
break;
default:
break;
}
}
3.实现从相册读取图片功能,代码如下
[objc] view plain copy print?在CODE上查看代码片派生到我的代码片
//从相册中读取
- (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];
[imagePicker release];
}
4.实现拍照功能
[objc] view plain copy print?在CODE上查看代码片派生到我的代码片
- (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];
[imagePicker release];
} else {
//弹出窗口响应点击事件
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"警告"
message:@"未检测到摄像头" delegate:nil cancelButtonTitle:nil
otherButtonTitles:@"确定", nil nil];
[alert show];
[alert release];
}
}
5.图片完成处理后提交,代理方法UIPickerControllerDelegate
[objc] view plain copy print?在CODE上查看代码片派生到我的代码片
//图片完成之后处理
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
//image 就是修改后的照片
//将图片添加到对应的视图上
[button setImage:image forState:UIControlStateNormal];
//结束操作
[self dismissViewControllerAnimated:YES completion:nil];
}