zoukankan      html  css  js  c++  java
  • UIView动画

    IOS动画的实现方式多种多样,这里就仅仅记录一下 beginAnimations:context 。

    在你调用 beginAnimations:context:方法来启动一个动画后,动画并不会马上被运行,直 到你调用 UIView 类的 commitAnimations 类方法。你对一个视图对象运行的介于 beginAnimations:context:方法跟 commitAnimations方法之间的操作(比如移动)会在 commitAnimations 被运行后才会生效 。

    代码非常easy,直接贴了,例如以下:

    //
    //  ViewController.m
    //  Graphics
    //
    //  Created by aaron on 14b-5-29.
    //  Copyright (c) 2014年 The Technology Studio. All rights reserved.
    //
    
    #import "ViewController.h"
    
    @interface ViewController ()
    @property(nonatomic,strong) UIImageView *imageView1;
    @property(nonatomic,strong) UIImageView *imageView2;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        UIImage *image = [UIImage imageNamed:@"1.png"];
        self.imageView1 = [[UIImageView alloc] initWithImage:image];
        self.imageView2 = [[UIImageView alloc] initWithImage:image];
        [self.imageView1 setFrame:CGRectMake(0.0f,
                                             0.0f,
                                             100.0f,
                                             100.0f)];
       
        [self.imageView2 setFrame:CGRectMake(220.0f,
                                             350.0f,
                                             100.0f,
                                             100.0f)];
        [self.view addSubview:self.imageView1];
        [self.view addSubview:self.imageView2];
        
    //    [self startTopLeftImageViewAnimation];
    //    [self startBottomRightViewAnimationAfterDelay:2];
        [self affineTransformScaleAnimation];
        [self affineTransformRotateAnimation];
        
    }
    
    //imageView2 animation
    -(void)startTopLeftImageViewAnimation{
        [self.imageView1 setFrame:CGRectMake(0.0f,
                                             0.0f,
                                             100.0f,
                                             100.0f)];
        [self.imageView1 setAlpha:1.0f];
        [UIView beginAnimations:@"imageView1Animation" context:(__bridge void*)self.imageView1];
        [UIView setAnimationDuration:3.0f];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDidStopSelector:@selector(imageViewDidStop:finished:context:)];
        [self.imageView1 setFrame:CGRectMake(220.0f, 350.0f, 100.0f, 100.0f)];
        [self.imageView1 setAlpha:0.0f];
        [UIView commitAnimations];
    }
    
    -(void)imageViewDidStop:(NSString*)paramAnimationID finished:(NSNumber*)paramFinished context:(void*)paramContext{
        NSLog(@"AnimationID = %@
    ",paramAnimationID);
        UIImageView *contextImageView = (__bridge UIImageView *)(paramContext);
        NSLog(@"contextImageView = %@",contextImageView);
        [contextImageView removeFromSuperview];
    }
    
    
    //imageView2 animation
    -(void)startBottomRightViewAnimationAfterDelay:(CGFloat)paramDelay{
        [self.imageView2 setFrame:CGRectMake(220.0f,
                                             350.0f,
                                             100.0f,
                                             100.0f)];
        [self.imageView2 setAlpha:1.0f];
        [UIView beginAnimations:@"imageView2Animation" context:(__bridge void *)(self.imageView2)];
        [UIView setAnimationDuration:3.0f];
        [UIView setAnimationDelay:paramDelay];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDidStopSelector:@selector(imageViewDidStop:finished:context:)];
        [self.imageView2 setFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];
        [self.imageView2 setAlpha:0.0f];
        [UIView commitAnimations];
    }
    
    
    //imageView1 AffineTransformScale animation
    -(void)affineTransformScaleAnimation{
        self.imageView1.center = self.view.center;
        self.imageView1.transform = CGAffineTransformIdentity;
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:5.0f];
        self.imageView1.transform = CGAffineTransformMakeScale(2.0f, 2.0f);
        [self.imageView1 setAlpha:0.0f];
        [UIView commitAnimations];
    }
    
    //imageView2 AffineTransformRotate animation
    -(void)affineTransformRotateAnimation{
        self.imageView2.center = self.view.center;
        [UIView beginAnimations:@"clockwiseAnimation" context:NULL];
        [UIView setAnimationDuration:5.0f];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDidStopSelector:@selector(clockwiseRotationStopped:finished:context:)];
        self.imageView2.transform = CGAffineTransformMakeRotation(90.0f*M_PI/180.f);
        [UIView commitAnimations];
    }
    
    
    -(void)clockwiseRotationStopped:(NSString*)paramAnimationID finished:(NSNumber*)paramFinished context:(void*)paramContext{
        [UIView beginAnimations:@"counterclockwiseAnimation" context:NULL];
        [UIView setAnimationDuration:5.0f];
        self.imageView2.transform = CGAffineTransformIdentity;
        [UIView commitAnimations];
    }
    
    @end
    

    执行效果例如以下:


  • 相关阅读:
    遗传算法(Genetic Algorithm, GA)及MATLAB实现
    CCF CSP 201809-2 买菜
    PAT (Basic Level) Practice (中文)1008 数组元素循环右移问题 (20 分)
    PAT (Basic Level) Practice (中文)1006 换个格式输出整数 (15 分)
    PAT (Basic Level) Practice (中文)1004 成绩排名 (20 分)
    PAT (Basic Level) Practice (中文)1002 写出这个数 (20 分)
    PAT (Advanced Level) Practice 1001 A+B Format (20 分)
    BP神经网络(原理及MATLAB实现)
    问题 1676: 算法2-8~2-11:链表的基本操作
    问题 1744: 畅通工程 (并查集)
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7191216.html
Copyright © 2011-2022 走看看