美文网首页
【学习ios之路:UI点击更换头像实现从相册读取照片和拍照两种功

【学习ios之路:UI点击更换头像实现从相册读取照片和拍照两种功

作者: _杨栋 | 来源:发表于2016-11-09 18:47 被阅读0次

    分类: 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];

    }

    相关文章

      网友评论

          本文标题:【学习ios之路:UI点击更换头像实现从相册读取照片和拍照两种功

          本文链接:https://www.haomeiwen.com/subject/ugrtpttx.html