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