• 窗口抖动效果


    方法1
    
    -(void)earthquake:(UIView*)itemView
    {
        CGFloat t =2.0;
    
        CGAffineTransform leftQuake  =CGAffineTransformTranslate(CGAffineTransformIdentity, t,-t);
        CGAffineTransform rightQuake =CGAffineTransformTranslate(CGAffineTransformIdentity,-t, t);
    
        itemView.transform = leftQuake;  // starting point
    
        [UIView beginAnimations:@"earthquake" context:itemView];
        [UIView setAnimationRepeatAutoreverses:YES];// important
        [UIView setAnimationRepeatCount:5];
        [UIView setAnimationDuration:0.07];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDidStopSelector:@selector(earthquakeEnded:finished:context:)];
    
        itemView.transform = rightQuake;// end here & auto-reverse
    
        [UIView commitAnimations];
    }
    
    -(void)earthquakeEnded:(NSString*)animationID finished:(NSNumber*)finished context:(void*)context 
    {
        if([finished boolValue]) 
        {
            UIView* item =(UIView*)context;
            item.transform =CGAffineTransformIdentity;
        }
    
    }
    
    
    
    
    方法2
    
    -(void)shakeView:(UIView*)viewToShake
    {
        CGFloat t =2.0;
        CGAffineTransform translateRight  =CGAffineTransformTranslate(CGAffineTransformIdentity, t,0.0);
        CGAffineTransform translateLeft =CGAffineTransformTranslate(CGAffineTransformIdentity,-t,0.0);
    
        viewToShake.transform = translateLeft;
    
        [UIView animateWithDuration:0.07 delay:0.0 options:UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat animations:^{
            [UIView setAnimationRepeatCount:2.0];
            viewToShake.transform = translateRight;
        } completion:^(BOOL finished){
            if(finished){
                [UIView animateWithDuration:0.05 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
                    viewToShake.transform =CGAffineTransformIdentity;
                } completion:NULL];
            }
        }];
    
    }
  • 相关阅读:
    Cordova 混合开发
    可能比文档还详细--VueRouter完全指北
    VUE项目实现页面跳转
    Vuex结合 async/await 优雅的管理接口请求
    vuex深入理解 modules
    vuex学习与实践——mapState、getter、mapGetters
    vuex里mapState,mapGetters使用详解
    vue.js相关UI组件收集
    vuex最简单、最直白、最全的入门文档
    深入理解表单脚本系列第三篇——选择文本
  • 原文地址:https://www.cnblogs.com/gaoxiao228/p/2482247.html
Copyright © 2020-2023  润新知