【iOS小福利】99%APP都能用上的小动画

1 tabar的点击动画

效果:

【iOS小福利】99%APP都能用上的小动画_第1张图片
tabbar动画.gif

声明:

这个效果是根据龙同学的博客写成的。当然他那边是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 = []
        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 广告栏动画

效果:

广告栏动画.gif

声明:

这个是很久之前网上看到的一个效果,自己加了点东西,至于是哪个链接这里已经记不清楚了,若原作者看到可以简信我,加个原文链接。

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"水滴效果。
以上。

你可能感兴趣的:(【iOS小福利】99%APP都能用上的小动画)