【学习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];
}



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。