(ios实战)实现类似于android 的toast控件
1实现原理
创建一个自定义控件,控件中显示文本,同时设置一个动画,三秒钟后,控件的alpha为0,动画完成后,控件移出掉ViewControl
2 创建PopView
2.1 PopView.h 部分
@interface PopView : UIView { UILabel *_textLabel; int _queueCount; } - (void) setText:(NSString *) text; @end
2.2 PopView.m
#import "PopView.h" #import <QuartzCore/QuartzCore.h> @implementation PopView - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent: 0.75f]; self.layer.cornerRadius = 5.0f; _textLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 10)]; _textLabel.numberOfLines = 0; _textLabel.font = [UIFont systemFontOfSize:17]; _textLabel.textColor = [UIColor whiteColor]; _textLabel.textAlignment = NSTextAlignmentCenter; _textLabel.backgroundColor = [UIColor clearColor]; _textLabel.textAlignment = NSTextAlignmentCenter; [self addSubview:_textLabel]; _queueCount = 0; } return self; } - (void) setText:(NSString *) text { _textLabel.frame = CGRectMake(0, 0, 100, 10); _queueCount ++; self.alpha = 1.0f; _textLabel.text = text; [_textLabel sizeToFit]; CGRect frame = CGRectMake(5, 0, _textLabel.frame.size.width, _textLabel.frame.size.height); _textLabel.frame = frame; frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, _textLabel.frame.size.width+10, _textLabel.frame.size.height+10); self.frame = frame; [UIView animateWithDuration:3.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn animations:^{ self.alpha = 0; } completion:^(BOOL finished){ if (_queueCount == 1) { [self removeFromSuperview]; } _queueCount--; } ]; } @end
3 调用方式:
[self.view addSubview:_popView]; [_popView setText:@"合成恢复"];
posted on 2013-06-12 11:17 狗尾草-大数据收割基 阅读(2801) 评论(1) 编辑 收藏 举报