IOS 开发之UIView动画的实例详解

IOS 动画实例详解

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

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

实现效果图:

代码很简单,直接贴了,如下:

//
// 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 = %@\n",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 voidvoid *)(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

以上就是关于IOS动画开发的实例,本站对于IOS 开发还有很多教程,大家可以搜索查阅!

(0)

相关推荐

  • IOS 开发之swift中UIView的扩展使用的实例

    IOS 开发之swift中UIView的扩展使用的实例 扩展类代码: import UIKit extension UIView { // MARK : 坐标尺寸 var origin:CGPoint { get { return self.frame.origin } set(newValue) { var rect = self.frame rect.origin = newValue self.frame = rect } } var size:CGSize { get { return

  • iOS动画-定时对UIView进行翻转和抖动的方法

    (翻转)方式一: [NSTimer scheduledTimerWithTimeInterval:3.f repeats:YES block:^(NSTimer * _Nonnull timer) { CABasicAnimation* rotationAnimation = [CABasicAnimation animation];; rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.

  • iOS为UIView设置阴影效果

    UIView的阴影设置主要通过UIView的layer的相关属性来设置 阴影的颜色 imgView.layer.shadowColor = [UIColor blackColor].CGColor; 阴影的透明度 imgView.layer.shadowOpacity = 0.8f; 阴影的圆角 imgView.layer.shadowRadius = 4.f; 阴影偏移量 imgView.layer.shadowOffset = CGSizeMake(4,4); imgView.layer.s

  • IOS自定义UIView

    IOS中一般会用到几种方式自定义UIView 1.继承之UIView的存代码的自定义View 2.使用xib和代码一起使用的自定义View 3.存xib的自定义View(不需要业务处理的那种) 本文主要就介绍下存代码的自定义UIView和能够在storeboard中实时显示效果的自定义UIView 先上效果图 上面为设计界面,能够直接显示一个View的圆角与边框线 上面那个圆形饼图是用纯代码自定义的 1.实现在storeboard中实时显示效果的自定义UIView  1.创建MyView.h 继

  • Swift 2.1 为 UIView 添加点击事件和点击效果

    前言 UIView 不像 UIButton 加了点击事件就会有点击效果,体验要差不少,这里分别通过自定义和扩展来实现类似 UIButton 的效果. 正文 一.为 UIView 添加点击事件 extension UIView { func addOnClickListener(target: AnyObject, action: Selector) { let gr = UITapGestureRecognizer(target: target, action: action) gr.numbe

  • IOS UIView的生命周期的实例详解

    IOS UIView的生命周期的实例详解 任何对象的者有一个生命周期,即都存在一个实例化到销毁的过程. UIView对象也不例外,那么UIView从init/new开始后,直到dealloc结束的过程中都经历了哪些过程呢? 首先自定义继承自UIView的对象LifeView #import <UIKit/UIKit.h> @interface LifeView : UIView @end #import "LifeView.h" @interface LifeView ()

  • 在uiview 的tableView中点击cell进入跳转到另一个界面的实现方法

    1.先重写uiviewcontrol的方法 - (UIViewController *)viewController { for (UIView* next = [self superview]; next; next = next.superview) { UIResponder *nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass:[UIViewController class]]) { return

  • IOS 开发之UIView动画的实例详解

    IOS 动画实例详解 iOS动画的实现方式多种多样,这里就只记录一下 beginAnimations:context . 在你调用 beginAnimations:context:方法来启动一个动画后,动画并不会立即被执行,直 到你调用 UIView 类的 commitAnimations 类方法.你对一个视图对象执行的介于 beginAnimations:context:方法跟 commitAnimations方法之间的操作(例如移动)会在 commitAnimations 被执行后才会生效

  • IOS 开发之Swift 元组的实例详解

    IOS 开发之Swift 元组的实例详解 元组是多个值组合而成的复合值.元组中的值可以是任意类型,而且每一个元素的类型可以是不同的. 元组声明 //普通声明 var point = (5,2) var httpResponse = (404, "Not Found") //定义类型声明 var point2 : (Int,Int,Int) = (10,5,2) var httpResponse2 : (Int,String) = (200,"ok") 元组解包 va

  • Android开发之Animations动画用法实例详解

    本文实例讲述了Android开发之Animations动画用法.分享给大家供大家参考,具体如下: 一.动画类型 Android的animation由四种类型组成:alpha.scale.translate.rotate XML配置文件中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动画效果 Java Code代码中 AlphaAnimation 渐变透明度动画效果 ScaleAnimation 渐变尺寸

  • IOS开发之JSON转PLIST实例详解

     IOS JSON转PLIST 从xx.json文件中读取JSON数据,写入到xx.plist文件中,实现代码如下: NSString *path = @"/Users/android_ls/Desktop/city_province.json"; NSArray *array = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:path] options:NSJSONReadingMutab

  • IOS swift中的动画的实例详解

    IOS swift中的动画的实例详解 UIView的通用动画 let view = UIView(frame: CGRectMake(10.0, 10.0, 100.0, 40.0)) self.view.addSubview(view) view.backgroundColor = UIColor.lightGrayColor() // 位置改变 var frame = view.frame UIView.animateWithDuration(0.6, delay: 2.0, options

  • IOS 开发之Object-C中的对象详解

    IOS 开发之Object-C中的对象详解 前言 关于C语言的基础部分已经记录完毕,接下来就是学习Object-C了,编写oc程序需要使用Foundation框架.下面就是对oc中的对象介绍. 对象 对象和结构类似,一个对象可以保存多个相关的数据.在结构中,我们称这些数据为成员.而在对象中,称这些数据为实例变量.除了这些以外,对象和结构不用之处在于,对象还可以包含一组函数,并且这些函数可以使用对象所保存的数据,这类函数称为方法. 类 类(class)负责描述某个特点类型的对象,其中包括方法和实例

  • IOS 开发中画扇形图实例详解

    IOS 开发中画扇形图实例详解 昨天在做项目中,遇到一个需要显示扇形图的功能,网上搜了一下,发现code4app里面也没有找到我想要的那种类似的效果,没办法了,只能自己学习一下如何画了. 首先我们需要了解一个uiview的方法 -(void)drawRect:(CGRect)rect 我们知道了这个方法,就可以在自定义UIView的子类的- (void)drawRect:(CGRect)rect里面绘图了,关于drawrect的调用周期,网上也是一找一大堆,等下我会整理一下,转载一篇供你们参考.

  • iOS新功能引导提示界面实例详解

    在开发中,现在很多app更新了新功能时都会给出用户一个提示,以方便用户更好的体验,那么这个功能如何实现的呢? 首先看下效果图: 1.首先创建第一个viewcontroller 在上面放上一个imageview和一个按钮 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. UIImageView *imageview=[[UIImageView alloc]ini

  • IOS 中CALayer绘制图片的实例详解

    IOS 中CALayer绘制图片的实例详解 CALayer渲染内容图层.与UIImageView相比,不具有事件响应功能,且UIImageView是管理内容. 注意事项:如何使用delegate对象执行代理方法进行绘制,切记需要将delegate设置为nil,否则会导致异常crash. CALayer绘制图片与线条效果图: 代码示例: CGPoint position = CGPointMake(160.0, 200.0); CGRect bounds = CGRectMake(0.0, 0.0

  • Android 帧动画的实例详解

    Android 帧动画的实例详解 对于 Android 帧动画 大体上可以理解成 一张张图片 按一定顺序切换, 这样当连续几张图是一组动画时,就可以连起来了看成是一个小电影,你懂得 好得,比就装到这里,下面开始进入正题,由于产品需求 需要做一个 声音喇叭动态切换的样式,我特么第一就想到是帧动画切换,然后就百度了一些资料,发现 真的, 现在这个网上太多的资料是 copy粘贴过来的, 一错全错,对于这种情况我只想说,made,一群垃圾, 所以今天我将带你们走进Android 正确帧动画地址. 第一步

随机推荐