iOS基础

上传头像遇到的坑

2018-08-08  本文已影响0人  EasonWangys

一、需求:

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

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

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;
}

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

上一篇 下一篇

猜你喜欢

热点阅读