zoukankan      html  css  js  c++  java
  • 【转】iOS类似Android上toast效果

    原文网址: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];
  • 相关阅读:
    魅族17系列真机谍照泄露 前摄挖孔将添新功能
    联想在S规则债券市场完成了里程碑式的新债券发行
    王小二切饼、马拦过河卒
    Codeforces Round #561 (Div. 2) A Tale of Two Lands 【二分】
    19年省赛后总结
    Winner Winner【模拟、位运算】
    GCDLCM 【米勒_拉宾素数检验 (判断大素数)】
    Floating-Point Hazard【求导公式】
    Communication【floyd判环+并查集】
    Largest Allowed Area【模拟+二分】
  • 原文地址:https://www.cnblogs.com/wi100sh/p/5600772.html
Copyright © 2011-2022 走看看