一,前言
最近做的项目要求做的UI展示效果特别高,之前是基于lottie做了一部分效果,但是lottie在动态效果也有自己缺陷地方。下面👇是我基于lottie实现一个tabBar,有兴趣的可以点击看一看!iOS-基于lottie框架自定制实现YCTabBar
YCAnimationNumberView是本攻城狮自定制一款动态出现验证码或者密码或者其他,一个效果展示不错,调用简单,再定制也容易的控件。
效果如下👇,效果---->平滑滑入滑出
效果--->平滑滑入,弹性弹出
二,主要代码
这里YCAnimationNumberView是基于UIView的,其中的动画实现主要是CABasicAnimation来实现的
CABasicAnimation中的旋转(transform.rotation.x)和移动(transform.translation.y)
其中涉及的难点就一个,那就是延迟执行。
在iOS中延迟执行方法有很多,1,GCD中的dispatch_after;
int64_t delay = 2.0; // 延迟的时间
dispatch_time_t iTime = dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC);
dispatch_after(iTime, dispatch_get_main_queue(), ^(void){
// do something
});
2,performSelector
- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay{}
3,NSThread线程的sleep
这种事肯定少不了NSThread,它的调用很简单,就是sleep函数
[NSThread sleepForTimeInterval:2.0];
4,就是NSTimer
在YCAnimationNumberView,我就是使用的NSTimer。因为本身动画效果就熬展示在创建view后,也就是占用主线程。还有for遍历存在下,NSTimer还有很好递进性很适合开发定制这样效果的控件。
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(imgviewAnimationRunDown) userInfo:nil repeats:YES];
三,demo
不废话,直接上代码,有需要可以自己去github下载!
有疑问的欢迎一起讨论!!!