美文网首页iOS基础
上传头像遇到的坑

上传头像遇到的坑

作者: EasonWangys | 来源:发表于2018-08-08 17:36 被阅读0次

    一、需求:

    用户注册时,需要上传头像;

    二、我最开始的写法:(错误的)

    headBtn = [[UIButton alloc] init];(此处的UIButton可以换成UIImageView)
    [headBtn setImage:[UIImage imageNamed:@"默认头像"] forState:UIControlStateNormal];
    [headBtn addTarget:self action:@selector(uploadMainImage) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:headBtn];
    [headBtn mas_makeConstraints:^(MASConstraintMaker *make) {
      make.top.equalTo(label.mas_bottom).offset(9*WX_VIEW_HEIGHT_RATIO);
        make.centerX.equalTo(self.view);
        make.width.height.equalTo(@(62 * WX_VIEW_WIDTH_RATIO));
    }];
    

    判空条件:

    if([headBtn.currentImage isEqual:[UIImage imageNamed:@"默认头像"]]) {
        [WXCommonUtil showHUDTips:@"头像不能为空" on:self.view];
        return;
    }
    

    正常状态下没有问题,但是如果把APP推出到后台,然后重新进入APP,此时的判空条件是无效的。

    三、原因:

    [UIImage imageNamed:@"默认头像"],它是一个局部变量,在退出后台重新进入前台,它会被释放掉,然后生成一个新的默认头像,地址改变,导致判空失效。

    四、合理的方案:

    UIImageView *bgHeadImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"默认头像"]];
    [self.view addSubview:bgHeadImage];
    [bgHeadImage mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(label.mas_bottom).offset(9*WX_VIEW_HEIGHT_RATIO);
        make.centerX.equalTo(self.view);
        make.width.height.equalTo(@(62 * WX_VIEW_WIDTH_RATIO));
    }];
    //headBtn 不设置默认头像
    
    //判空条件
    if(headBtn.currentImage == nil) {
        [WXCommonUtil showHUDTips:@"头像不能为空" on:self.view];
        return;
    }
    

    完事。(如果大家有什么好的意见,可以沟通交流)

    相关文章

      网友评论

        本文标题:上传头像遇到的坑

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