您的位置:首页 > 移动开发 > Android开发

【转】iOS类似Android上toast效果

2016-06-20 15:53 363 查看
原文网址:http://m.blog.csdn.net/article/details?id=50478737

做过Android开发的人都知道toast,它会在界面上显示一排黑色背景的文字,用于提示用户信息。但iOS上并没有类似的控件,so,自己写一个吧。

原理:

说白了,Android中的toast可以理解成iOS中的一个黑色背景的UILabel。。。

效果图:

是不是还可以,什么背景颜色,字体大小,位置,统统都是可以自己设置的。

代码:

//尺寸设置
#define aiScreenWidth [UIScreen mainScreen].bounds.size.width
#define aiScreenHeight [UIScreen mainScreen].bounds.size.height
#define STATUS_BAR_HEIGHT [[UIApplication sharedApplication] statusBarFrame].size.height
#define NAVIGATION_BAR_HEIGHT self.navigationController.navigationBar.frame.size.height
#define TAB_BAR_HEIGHT self.tabBarController.tabBar.frame.size.height


- (void) addToastWithString:(NSString *)string inView:(UIView *)view {

CGRect initRect = CGRectMake(0, STATUS_BAR_HEIGHT + 44, aiScreenWidth, 0);
CGRect rect = CGRectMake(0, STATUS_BAR_HEIGHT + 44, aiScreenWidth, 22);
UILabel* label = [[UILabel alloc] initWithFrame:initRect];
label.text = string;
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.font = [UIFont systemFontOfSize:14];
label.backgroundColor = [UIColor colorWithRed:0 green:0.6 blue:0.9 alpha:0.6];

[view addSubview:label];

//弹出label
[UIView animateWithDuration:0.5 animations:^{

label.frame = rect;

} completion:^ (BOOL finished){
//弹出后持续1s
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(removeToastWithView:) userInfo:label repeats:NO];
}];
}

- (void) removeToastWithView:(NSTimer *)timer {

UILabel* label = [timer userInfo];

CGRect initRect = CGRectMake(0, STATUS_BAR_HEIGHT + 44, aiScreenWidth, 0);
//    label消失
[UIView animateWithDuration:0.5 animations:^{

label.frame = initRect;
} completion:^(BOOL finished){

[label removeFromSuperview];
}];
}


使用方法:

[self addToastWithString:@"更新到最新数据啦~" inView:self.view];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: