1 tabar的点击动画
效果:
声明:
这个效果是根据龙同学的博客写成的。当然他那边是OC版本的,我自己稍微翻译了一下,改成了swift版本
swift3.0代码:
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
var index:NSInteger?
index = self.tabBar.items?.index(of: item)
animationWithIndex(index!)
}
func animationWithIndex(_ index :NSInteger){
var tabbarbuttonArray : Array<UIView?> = []
for tabBarButton in (self.tabBar.subviews) {
if tabBarButton.isKind(of: NSClassFromString("UITabBarButton")!){
tabbarbuttonArray.append(tabBarButton)
}
}
let pulse = CABasicAnimation.init(keyPath: "transform.scale")
pulse.timingFunction = CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseInEaseOut)
pulse.duration = 0.08;
pulse.repeatCount = 1;
pulse.autoreverses = true;
pulse.fromValue = NSNumber.init(value: 0.7)
pulse.toValue = NSNumber.init(value: 1.3)
tabbarbuttonArray[index]?.layer.add(pulse,forKey:nil)
}
2 广告栏动画
效果:
声明:
这个是很久之前网上看到的一个效果,自己加了点东西,至于是哪个链接这里已经记不清楚了,若原作者看到可以简信我,加个原文链接。
OC代码如下:
将一个定时器写在UIScrollView的代理中
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
[timer invalidate];
timer = nil;
timer = [NSTimer scheduledTimerWithTimeInterval: kAnimationTime
target: self
selector: @selector(autoScroll:)
userInfo: nil
repeats: YES];
}
- (void)autoScroll:(NSTimer *)sender {
[UIView animateWithDuration:0.5 animations:^{
//[_scrollView setContentOffset:CGPointMake(SCROLL_VIEW_WIDTH * 2, 0) animated:NO];
[self transitionAnimation:YES andAnimationMode:7];
} completion:^(BOOL finished) {
[self moveRight];
}];
}
-(void)transitionAnimation:(BOOL)isNext andAnimationMode:(int)mode
{
//动画模式
NSArray *animationModeArr=@[@"cube", @"moveIn", @"reveal", @"fade",@"pageCurl", @"pageUnCurl", @"suckEffect", @"rippleEffect", @"oglFlip"];
//1.创建转场动画对象
CATransition *transition=[[CATransition alloc]init];
//2.设置动画类型,注意对于苹果官方没公开的动画类型只能使用字符串,并没有对应的常量定义
//@"cube" @"moveIn" @"reveal" @"fade"(default) @"pageCurl" @"pageUnCurl" @"suckEffect" @"rippleEffect" @"oglFlip"
transition.type = animationModeArr[mode];
//设置子类型 (动画的方向)
if (isNext) {
transition.subtype=kCATransitionFromRight; //右
}else{
transition.subtype=kCATransitionFromRight; //左
}
//设置动画时间
transition.duration=1.0f;
//3.设置转场后的新视图添加转场动画
//self.centerImageView.image=[self getImage:isNext];
//加载动画
[self.centerImageView.layer addAnimation:transition forKey:@"KCTransitionAnimation"];
}
效果图中的效果是动画模式数组中的第7个对象 "rippleEffect"水滴💧效果。
以上。