在工作中, 我们经常要给用户适当弹出的提示框,展示用户的操作后的结果.例如: 清除缓存成功; 密码修改成功...... 今天我就给大家提供一种简便的一种方法,完成这项功能.其工作原理就是利用懒加载, 然后设置 view 的hidden 属性 来完成.具体代码如下:
首先在 @interface 把 你要显示的view 设置成自己的self.view 的一个属性:例如我的 successView .
@property (nonatomic, strong) UIView * successView;
利用懒加载 具体实现 展示什么内容
// 懒加载: getter 方法
- (UIView *)successView{
if (!_successView) {
_successView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 190, 98)];
_successView.center = self.view.center;
_successView.layer.cornerRadius = 8;
_successView.hidden = true;
_successView.clipsToBounds = true;
_successView.backgroundColor = [UIColor colorWithRed:145 / 255.0 green:145 / 255.0 blue:145 / 255.0 alpha:0.8];
UIImageView * imageView =[[UIImageView alloc]init];
imageView.image = [UIImage imageNamed:@"clearSuccess.png"];
[_successView addSubview:imageView];
[imageView mas_makeConstraints:^(MASConstraintMaker *make) {
//make.size.sizeOffset = [UIImage imageNamed:@"clearSuccess.png"].size;
make.top.mas_equalTo(_successView.mas_top).with.offset(12.5);
make.centerX.mas_equalTo(_successView.mas_centerX);
make.width.height.mas_equalTo(32);
}];
UILabel * titleLabel = [[UILabel alloc]init];
titleLabel.text = @"清除缓存成功!";
titleLabel.textColor = [UIColor whiteColor];
titleLabel.font = [UIFont systemFontOfSize:18];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.textAlignment = NSTextAlignmentCenter;
[_successView addSubview:titleLabel];
[titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(imageView.mas_bottom).with.offset(17);
make.width.mas_greaterThanOrEqualTo(20);
make.height.mas_equalTo(18);
make.centerX.mas_equalTo(_successView.mas_centerX);
}];
[self.view addSubview:_successView];
}
return _successView;
}
在 点击按钮中实现 切换view 的hidden 属性
/** 自定义视图 */
[self.successView setHidden:false]; // 这里需要修改
//弹框提示1秒后,把这个弹框消失,默认的消失时间有点长
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.successView setHidden:true];
});
总结: 这篇文章用到了 一段时间后去执行什么方法,我认为最常用的...(s)或者一段时间去执行方法有以下几种方案:
(1)利用定时去完成
(2)
[self performSelector: @selector(方法名) withObject: 参数 afterDelay: 时间];
(3)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.successView setHidden:true]; });