【学习ios之路:UI系列】点击更换头像实现从相册读取照片和拍照两种功能
功能如下:
1.点击头像,提示选择更换头像方式①相册 ②照相.
2.点击相册,实现通过读取系统相册,获取图片进行替换.
3.点击照相,通过摄像头照相,进行替换照片.
4.如果摄像头,弹出框警告.
代码如下:
1.通过UIActionSheet对象实现提示功能
//创建对象 UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle: @"提示" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"相册",@"拍照", nil]; //在视图上展示 [actionSheet showInView:self.view]; [actionSheet release];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]; [imagePicker release]; }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]; [imagePicker release]; } else { //弹出窗口响应点击事件 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"警告" message:@"未检测到摄像头" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil]; [alert show]; [alert release]; } }5.图片完成处理后提交,代理方法UIPickerControllerDelegate
//图片完成之后处理 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { //image 就是修改后的照片 //将图片添加到对应的视图上 [button setImage:image forState:UIControlStateNormal]; //结束操作 [self dismissViewControllerAnimated:YES completion:nil]; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。