iOS学习笔记之修改头像

作者: 李长友同学 | 来源:发表于2016-12-19 21:30 被阅读479次

    话不多说,直接开始:

    1. 获取手机相册和相机权限
    • 在info.plist里面添加 Privacy - Photo Library Usage Description, 允许访问手机相册
    • 在info.plist里面添加 Privacy - Camera Usage Description, 允许访问照相机
    获取相册和相机权限
    2. 遵守两个协议 UINavigationControllerDelegate, UIImagePickerControllerDelegate

    遵守协议后实现代理方法,可以对选中图片进行操作

    3. 给头像控件添加手势,这里注意设置 userInteractionEnabledYES ,否则手势无效。
      self.headImageView.userInteractionEnabled = YES;
      UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(changeHeadImage)];
      [self.headImageView addGestureRecognizer:gesture];
    
    4. 实现手势的方法,弹出 AlertController,选择接下来的操作
    - (void)changeHeadImage {
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
        [alert addAction:[UIAlertAction actionWithTitle:@"从手机相册选择" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            // 从手机相册选择图片的操作,见下文步骤5
        }]];
        [alert addAction:[UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {   
            // 拍照操作,见下文下文步骤5 
        }]];
        [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];
        [self presentViewController:alert animated:YES completion:nil];
    }
    
    点击头像出现的弹框
    5. 从手机相册选择图片和拍照的操作
       // sourceType是一个枚举,有三种类型,设置为 UIImagePickerControllerSourceTypeCamera 时,调用相机拍照,其余两种从相册中选取图片
       UIImagePickerControllerSourceTypePhotoLibrary     // 来自图库
       UIImagePickerControllerSourceTypeCamera           // 来自相机
       UIImagePickerControllerSourceTypeSavedPhotosAlbum // 来自相册
    
      UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
      // 设置 sourceType
      imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
      imagePicker.delegate = self;
      // 允许对图片进行拉伸、裁剪等编辑操作,如果设置为 NO,则直接使用原图
      imagePicker.allowsEditing = YES;
      [self presentViewController:imagePicker animated:YES completion:nil];
    

    关于UIImagePickerController,戳这里,这是我之前看到的一篇博客,讲的比较详细。

    6. 实现代理方法,选中图片后所做的操作放在这里,一般都是将头像控件的头像更换为新选中的头像,并将新头像上传至服务器。
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
        // 更换头像控件,这里如果key值为 UIImagePickerControllerEditedImage,获取的是编辑过的图片,如果是 UIImagePickerControllerOriginalImage 则获取原图,这里还有几个 key,有兴趣的可以研究一下
        self.headImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
        [self dismissViewControllerAnimated:YES completion:nil];
    
        // 新头像上传至服务器
    
    }
    
    补充:到这里貌似已经结束了,但是发现调用的相册和相机显示为英文,解决方法如下:
    • 在 info.plist 里面添加 Localized resources can be mixed,类型为Boolean,改为 YES,表示允许应用程序获取框架库内语言
    • 在 info.plist 里面添加 Localizations,类型是 Array ,添加 Chinese
    相册显示英文解决方法

    相关文章

      网友评论

      本文标题:iOS学习笔记之修改头像

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