原文网址: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];