ios跑马灯

50 篇文章 1 订阅
46 篇文章 0 订阅

之前项目做一个类似跑马灯的效果

因为项目需求每次回到跑马灯页面都要从第一个开始动画

所以刚开始就用了UIView的Animations动画,在动画结束后调用一个方法来改变数据然后继续Animations,在没离开这个页面的时候都是正常的,可是没想到离开这个页面后 这个动画的时间好像就不起作用了似的,一直在互相掉没有延迟时间了!一直没找到问题的所在;


之后在开发过程中突然想到用系统的延迟方法:

[self performSelector:@selector(startTimer) withObject:nil afterDelay:kStartTime];

替换Animations的

+ (void)setAnimationDidStopSelector:(SEL)selector; 
方法来做动画结束的功能


代码例子:

-(void)startTimer{
    
    
    textIndex++;
    [textLabel setViewX:300];
    if (textIndex >= [textArray count])
        textIndex = 0;
    
    textLabel.text =[textArray objectAtIndex:textIndex];
   
    if (isAnimation) {
        
        [self textRunner];
        
    }
    
}

-(void)textRunner{
    // -------滚动
    [UIView beginAnimations:@"testAnimation" context:NULL];
    [UIView setAnimationDuration:kStartTime];
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationRepeatAutoreverses:NO];     //不重复播放
    
    //使用延迟方法替代动画结束调用方法功能
    [self performSelector:@selector(startTimer) withObject:nil afterDelay:kStartTime];
    

    [textLabel setViewX:-400];
    
    
    [UIView commitAnimations];
    
}

如果有需求的话可以调用

 [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(startTimer) object:nil];

来停止动画的互相调用




如果有朋友知道我的问题出在哪里指点一下小弟

为什么离开页面后他的延迟时间就不好使了!!!!!!!!!!!!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠哉-辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值