iOS toast 的连续显示

本文介绍了一种改进的Toast提示实现方式,当新的Toast出现时,会取消当前的延迟计时器并重新开始计时。同时根据Toast是否已显示决定是否添加动画效果,确保用户体验平滑。
  1. 新的 toast 来了, 如果当前的 toast 还没有结束, 需要停止当前的延迟计时器, 重新开启一个新的计时器.
  2. 新的 toast 来了, 会因为动画地显示而闪一下, 可以根据 toast 是否显示, 来确定是否需要添加动画.
     1 #pragma mark 隐藏视图
     2 - (void)hideSelfViewWithDelay{
     3     [self performSelector:@selector(hideSelfView) withObject:nil afterDelay:2];
     4 }
     5 
     6 - (void)cancelHideSelfViewWithDelay{
     7     [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideSelfView) object:nil];
     8 }
     9 
    10 
    11 /**
    12  更新 toast 提示, 重新延迟2秒显示
    13  */
    14 - (void)restartHideSelfViewWithDelay{
    15     [self cancelHideSelfViewWithDelay];
    16     [self hideSelfViewWithDelay];
    17 }
    18 
    19 
    20 - (void)hideSelfView{
    21     self.alpha = 1;
    22     [UIView animateWithDuration:0.25 animations:^{
    23         self.alpha = 0.1;
    24     } completion:^(BOOL finished) {
    25         self.hidden = YES;
    26     }];
    27 }
    28 
    29 
    30 /**
    31  如果已经显示, 就不添加动画
    32  */
    33 - (void)showSelfView{
    34     if (self.hidden == YES) {
    35         self.hidden = NO;
    36         self.alpha = 0.1;
    37         [UIView animateWithDuration:0.25 animations:^{
    38             self.alpha = 1;
    39         }];
    40     }
    41   
    42     [self restartHideSelfViewWithDelay];
    43 }
    44 
    45 - (void)dealloc{
    46     [self cancelHideSelfViewWithDelay];
    47 }

     

转载于:https://www.cnblogs.com/lz465350/p/9209877.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值