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