学习iOS全局跑马灯

2025-05-29 0 88

本文实例为大家分享了iOS全局跑马灯制作方法,供大家参考,具体内容如下

思路:

1.创建一个单例

?

1

2

3

4

5

6

7

8
+ (instancetype)shareManager {

static CCPaomaView *pModel = nil;

static dispatch_once_t once;

dispatch_once(&once, ^{

pModel = [[CCPaomaView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, 0.0468 *KScreenHeight)];

});

return pModel;

}

2.把接收的数据存在本地的 plist,不适用于大量数据,每次读取第一个数据,读取完成删除整个 plist,再把剩下的重新存进 plist

3.根据动画代理,监听动画执行结束,将动画实例置为 nil

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{

NSLog(@"%@",[self.paomaLabel.layer animationForKey:@"paoMaDeng"]);

if ([self.paomaLabel.layer animationForKey:@"paoMaDeng"] == anim) {

//移除第一组数据

[_array removeObjectAtIndex:0];

//移除整个 plist

[CCPaomaModel removePaomaPlist];

//重新写入

[_array writeToFile:[CCPaomaModel filename] atomically:YES];

//动画停止之后,将实例置为 nil

_pmAniamtion = nil;

//数组为空之后移除跑马灯

if (_array.count > 0) {

[self showPaomaView:self.superview];

}else{

self.hidden = YES;

[self removeFromSuperview];

}

NSLog(@"%@",self.array);

}

}

4.判断动画实例是否为空,使得切换界面,跑马灯继续,而不是重新开始

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18
- (void)paomaAniamtion:(CGFloat)count{

//判断动画实例存不存在,存在继续,不存在即创建

if (_pmAniamtion == nil) {

_pmAniamtion = [CABasicAnimation animation];

_pmAniamtion.keyPath = @"transform.translation.x";

CGFloat W = CGRectGetWidth(_paomaLabel.bounds);

_pmAniamtion.fromValue = @(W);

_pmAniamtion.toValue = @(-W);

_pmAniamtion.duration = _aniTime;

_pmAniamtion.repeatCount = count;

_pmAniamtion.removedOnCompletion = NO; //动画结束不移除

_pmAniamtion.fillMode = kCAFillModeForwards; //动画结束会保持结束的状态

_pmAniamtion.delegate = self; //设置代理

[_paomaLabel.layer addAnimation:_pmAniamtion forKey:@"paoMaDeng"];

}else{

_pmAniamtion.repeatCount = count;

}

}

5.切换界面,暂停、恢复动画

?

1

2

3

4

5

6

7

8

9
#pragma mark -- 界面出现、消失,创建、恢复、暂停动画

- (void)viewWillAppear:(BOOL)animated {

[_paomaView showPaomaView:self.view];

[_paomaView resumeAnimation];

}

- (void)viewWillDisappear:(BOOL)animated {

[_paomaView pauseAniamtion];

}

话不多说,github 见代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 学习iOS全局跑马灯 https://www.kuaiidc.com/91312.html

相关文章

发表评论
暂无评论