Skip to content

shanyou2016/BigWheelCode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 

Repository files navigation

最近公司要做转盘抽奖,看了些github 的代码,自己终于做出来了,现在总结下技术点,让以后有点记忆;

总体结构:

主转盘:主逻辑区(包括转盘+业务列表)DZPMainView

转盘:转盘代码 LYLuckyCardRotationView

转盘的cell:转盘每个抽奖区 LYLuckyCardCellView

这个结构是参考了https://github.com/ayangcool/LYLuckyCardDemo,谢谢该位码农的贡献;

实际使用中,感觉:主转盘 和 转盘 可以合成一个。这样转盘和业务不会垮类,我在开发中,主转盘的剩余积分就垮类,用通知来实现赋值;

转盘:转盘的动画用CABasicAnimation 的 transform.rotation 实现的;

动画有3个:1:在点击获取网络中奖数据时,这里会有网络请求时间,这个时间就有一个本地的旋转动画;

                   2:获得网络中奖数据时,做的动画,旋转到中奖点;

                   3:中奖后的中奖特效。

动画之前的连接是通过 CABasicAnimation 的delegate实现

  • (void)animationDidStart:(CAAnimation *)anim;

  • (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;

    [self.winView.layer addAnimation:animationWin forKey:@"animationWin"];

[self.winView.layer.animationKeys[0] isEqualToString:@"animationWin"]

开发中注意的点,动画用完后,再开启其他动画前,一定要关闭之前动画

我用的是: [self.winView.layer removeAllAnimations];

取角度:(count - I)/count

其他做大转盘用的的知识和参考:

iOS 饼状图(扇形图)动画效果的实现

https://www.jianshu.com/p/e47adddc6308

其他网上大转盘开发思路

https://www.jianshu.com/p/4056faba6019

View的初始frame, 弹出隐藏

https://github.com/Shanguo/SGBrowserView

发现实际开发中,弹窗方式有问题,用到了上面的代码,非常感谢这位码农。

iOS 判断奇偶数

https://www.cnblogs.com/liuting-1204/p/5946366.html

iOS数组排序(倒叙 生序 降序)

https://www.jianshu.com/p/e9d561140f5b

iOS数组模型根据模型属性排序

https://www.jianshu.com/p/d7a7630c98e7

实际开发中大转盘调用方式;

#define UGScreenW [UIScreen mainScreen].bounds.size.width

#define UGScerrnH [UIScreen mainScreen].bounds.size.height

// About __block

#define _weakSelf(__self) __weak typeof(self) __self = self

#define RGBA(_R,_G,_B,_A) \

[UIColor colorWithRed:((_R) /255.0) green:((_G) /255.0) blue:((_B) /255.0) alpha:_A]

我还没找到可以单独关闭莫个动画的办法,如果有那个小伙伴发现了可以留言。

https://github.com/shanyou2016/BigWheelCode

About

大转盘

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published