• ios 开发选取头像,图片库,相机,裁取图片


    需要遵守的代理协议:UIActionSheetDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate

    @property (nonatomic, strong) UIActionSheet *avatarActionSheet;

    第一步:点击头像cell需要做的事情

    [self.avatarActionSheet showInView:self.view];

     

    第二步:

    #pragma mark - 点击头像

    - (UIActionSheet *)avatarActionSheet

    {

        if (!_avatarActionSheet) {

            _avatarActionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"选择你的头像", @"") delegate:self cancelButtonTitle:NSLocalizedString(@"取消", @"") destructiveButtonTitle:nil otherButtonTitles:NSLocalizedString(@"相机", @""), NSLocalizedString(@"在图片库选择", @""), nil];

        }

        return _avatarActionSheet;

    }

     

    #pragma mark - 弹框代理方法

    - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex

    {

        GYLog(@"%d" , buttonIndex);

        

        if (buttonIndex == 2) return;// 取消

        [self showImagePickerViewController:buttonIndex];

    }

     

    - (void)showImagePickerViewController:(NSInteger)pickerUserAvatarType

    {

        UIImagePickerControllerSourceType sourceType;

        NSString *description = nil;

        switch (pickerUserAvatarType) {

            case 0:

                sourceType = UIImagePickerControllerSourceTypeCamera;

                description = NSLocalizedString(@"该设备不支持相机", @"");

                break;

            case 1:

                sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

                description = NSLocalizedString(@"该设备不支持图片库", @"");

                break;

        }

        if (![UIImagePickerController isSourceTypeAvailable:sourceType]) {

            [self initalizerAlertViewWithTitle:NSLocalizedString(@"警告", @"") description:description];

            return;

        }

        

        UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];

        imagePickerController.delegate = self;

        imagePickerController.allowsEditing = YES;

        imagePickerController.sourceType = sourceType;

        imagePickerController.videoQuality = UIImagePickerControllerQualityTypeMedium;

        [self presentViewController:imagePickerController animated:YES completion:NULL];

    }

     

    - (void)initalizerAlertViewWithTitle:(NSString *)title description:(NSString *)description

    {

        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title message:description delegate:nil cancelButtonTitle:nil otherButtonTitles: NSLocalizedString(@"确定", @""), nil];

        [alertView show];

    }

     

    - (void)showAvatarImage:(UITapGestureRecognizer *)tapGesture

    {

        GYLog(@"----------------------");

    }

     

    #pragma mark - 图片选择控制器的代理

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

    {

        UIImage *userAvatar = [info valueForKey:UIImagePickerControllerEditedImage];

        [self.userIconView setImage:userAvatar];

        [picker dismissViewControllerAnimated:YES completion:NULL];

       

        // 1.创建请求管理对象

        AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];

        

        // 2.封装请求参数

        NSMutableDictionary *params = [NSMutableDictionary dictionary];

        params[@"verify"] = [GYUserDefaults objectForKey:@"verify"];

        params[@"avatar"] = userAvatar;

        

        // 3.发送请求

        NSString *str = [NSString stringWithFormat:@"http://%@/?action=personal&option=update_avatar",GYAPP_URL];

        [mgr POST:str parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { // 在发送请求之前调用这个block

     

                NSData *data = UIImageJPEGRepresentation(userAvatar, 0.000001);

                [formData appendPartWithFileData:data name:@"pic" fileName:@"" mimeType:@"image/jpeg"];

        

        } success:^(AFHTTPRequestOperation *operation, id responseObject) {

            

            [MBProgressHUD showSuccess:@"发送成功"];

    #warning 是否需要进行数据存储

            [GYUserDefaults setObject:responseObject[@"avatar"] forKey:@"avatar"];

            

        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

            

            [MBProgressHUD showError:@"发送失败"];

            

        }];

     

    }

     

     

  • 相关阅读:
    面试题整理
    Node.js核心模块-stream流
    Node.js核心模块-crypto加密
    Node.js核心模块-assert
    Node.js全局对象-process
    nodemon
    随笔
    python学习笔记(十四): unittest
    python学习笔记(十三): 多线程多进程
    python学习笔记(十二):发送邮件
  • 原文地址:https://www.cnblogs.com/yjg2014/p/3825832.html
Copyright © 2020-2023  润新知