UIView动画下

#import "ViewController.h"

@interface ViewController ()
{
    UIButton *btn;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    btn=[UIButton buttonWithType:UIButtonTypeSystem];
    btn.frame=CGRectMake(30, 30, 50, 50);
    btn.backgroundColor=[UIColor redColor];
    [btn setTitle:@"按钮" forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(btnclick:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];

}
//UIViewAnimationWithBlocks
-(void)btnclick:(id)sender
{
   // 此方法参数1:动画时长 参数2:修改的View的属性
    [UIView animateWithDuration:2 animations:^{
        btn.backgroundColor=[UIColor blackColor];
    }];

   //此方法参数1:动画时长 参数2:修改的View的属性 参数3:动画完成的回调
   [UIView animateWithDuration:3 animations:^{
       btn.backgroundColor=[UIColor redColor];
   } completion:^(BOOL finished) {
       NSLog(@"completion1");
   }];
   /* UIViewAnimationOptionLayoutSubviews //提交动画的时候布局子控件,表示子控件将和父控件一同动画。

    UIViewAnimationOptionAllowUserInteraction //动画时允许用户交流,比如触摸

    UIViewAnimationOptionBeginFromCurrentState //从当前状态开始动画

    UIViewAnimationOptionRepeat //动画无限重复

    UIViewAnimationOptionAutoreverse //执行动画回路,前提是设置动画无限重复

    UIViewAnimationOptionOverrideInheritedDuration //忽略外层动画嵌套的执行时间

    UIViewAnimationOptionOverrideInheritedCurve //忽略外层动画嵌套的时间变化曲线

    UIViewAnimationOptionAllowAnimatedContent //通过改变属性和重绘实现动画效果,如果key没有提交动画将使用快照

    UIViewAnimationOptionShowHideTransitionViews //用显隐的方式替代添加移除图层的动画效果

    UIViewAnimationOptionOverrideInheritedOptions //忽略嵌套继承的选项

    //时间函数曲线相关

    UIViewAnimationOptionCurveEaseInOut //时间曲线函数,由慢到快

    UIViewAnimationOptionCurveEaseIn //时间曲线函数,由慢到特别快

    UIViewAnimationOptionCurveEaseOut //时间曲线函数,由快到慢

    UIViewAnimationOptionCurveLinear //时间曲线函数,匀速

    //转场动画相关的

    UIViewAnimationOptionTransitionNone //无转场动画

    UIViewAnimationOptionTransitionFlipFromLeft //转场从左翻转

    UIViewAnimationOptionTransitionFlipFromRight //转场从右翻转

    UIViewAnimationOptionTransitionCurlUp //上卷转场

    UIViewAnimationOptionTransitionCurlDown //下卷转场

    UIViewAnimationOptionTransitionCrossDissolve //转场交叉消失

    UIViewAnimationOptionTransitionFlipFromTop //转场从上翻转

    UIViewAnimationOptionTransitionFlipFromBottom //转场从下翻转
    */
    //参数1 动画时长 参数2 延迟时间 参数3 枚举见上面注释 参数4 改变View属性 参数5 动画完成时回调
    [UIView animateKeyframesWithDuration:2 delay:2 options:UIViewKeyframeAnimationOptionBeginFromCurrentState animations:^{
          btn.backgroundColor=[UIColor greenColor];
            CGRect frame=btn.frame;
            if (frame.origin.x<self.view.frame.size.width-20) {
                frame.origin.x+=20;
            }
            else
            {
                frame.origin.x=0;

            }
            btn.frame=frame;
    } completion:^(BOOL finished) {
        NSLog(@"completion2");
    }];
    //转场动画
    [UIView transitionFromView:self.view toView:btn duration:5 options:UIViewAnimationOptionTransitionCurlDown completion:^(BOOL finished) {
        NSLog(@"completion3");
    }];
   [UIView transitionWithView:self.view duration:5 options:UIViewAnimationOptionTransitionFlipFromBottom animations:^{
       btn.backgroundColor=[UIColor redColor];
   } completion:^(BOOL finished) {
       NSLog(@"completion4");
   }];

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
时间: 2024-08-03 10:00:45

UIView动画下的相关文章

iOS4下实现UIView动画结束后调用

  在写代码时,发现原来3.1.3下经常用的uiview动画结束后调用事件的方法居然不起作用了,摸索了一下,发现ios4下对uivew的animation处理已经有新的方式了,和大家分享一下: 代码功能:在myview向下移出屏幕的动画结束后,触发事件再将myview移除掉. ios4以前的用法: [UIView beginAnimations:@"View Remove" context:nil]; UIView setAnimationDelegate:self]; [UIView

iOS UIView动画详解(Objective-C)

    我在之前的一篇博客中<iOS UIView动画详解(Swift)>讲解了使用Swift来实现UIView类下面提供的多种动画效果,如位置动画.旋转动画.缩放动画.颜色动画.透明度动画等等.为了这个题目的完整性,今天我使用Objective-C来完全重写以上的所有的动画.项目案例已经上传至:https://github.com/chenyufeng1991/iOS-UIView-Animation  中的Animation-OC文件夹下,另一个目录下则是Swift实现的动画. (1)位置

iOS开发:UIView动画详解

  执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码包装到一个代码块中. 1.UIView动画具体创建方法 - (void)buttonPressed { // 交换本视图控制器中2个view位置 [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1]; //UIView开始动画,第一个参数是动画的标识,第二个参数附加的应用程序信息用来传递给动画代理消息 [UIView beginA

iOS动画开发之二——UIView动画执行的另一种方式

iOS动画开发之二--UIView动画执行的另一种方式         上一篇博客中介绍了UIView的一些常用动画,通过block块,我们可以很方便简洁的创建出动画效果:http://my.oschina.net/u/2340880/blog/484457,这篇博客再介绍一种更加传统的执行UIView的动画的方法.         这种方式相比如block的方式,显得要麻烦一些,apple官方也推荐我们使用带block的创建动画的方式,我们可以将编程重心更多的放在动画逻辑的实现上.使用begi

iOS&amp;amp;nbsp;动画总结—UIView动画

1.概述 UIKit直接将动画集成到UIView类中,实现简单动画的创建过程.UIView类定义了几个内在支持动画的属性声明,当这些属性发生改变时,视图为其变化过程提供内建的动画支持. 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码包装到一个代码块中. 2.UIView动画具体创建方法 - (void)buttonPressed { //  交换本视图控制器中2个view位置     [self.view exchangeSubviewAt

iOS动画:UIView动画和CALayer动画(CABasicAnimation、CAKeyframeAnimation的使用)

iOS中的动画有两种实现方式,一种是UIView来实现动画,另一种动画是通过CALayer来实现,下面介绍两种动画的简单实现: 一.UIView动画的实现    UIView使用Context来实现动画 关键代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 //参数1 动画名称 参数2 要实现动画的对象上下文           [UIView beginAnimations:

iOS - UIView 动画

1.UIView 动画 核心动画 和 UIView 动画 的区别: 核心动画一切都是假象,并不会真实的改变图层的属性值,如果以后做动画的时候,不需要与用户交互,通常用核心动画(转场). UIView 动画必须通过修改属性的真实值,才有动画效果. 1.1 block 方式 设置控件位置.尺寸.透明度等的代码,放在 animateWithDuration: block 中,将自动以动画的方式改变. // 开始动画,动画持续时间 2 秒 [UIView animateWithDuration:1.0

iOS 开发之动画篇 - 从 UIView 动画说起

毋庸置疑的:在iOS开发中,制作动画效果是最让开发者享受的环节之一.一个设计严谨.精细的动画效果能给用户耳目一新的效果,吸引他们的眼光 -- 这对于app而言是非常重要的. 本文作为动画文集的第一篇,最开始是想做个qq下拉刷新的水滴动画的制作讲解,但这几天研读<iOS Animations by Tutorials>一书,对iOS动画开发有了更为深刻的了解,于是决定动画篇将从UIView动画开始讲起,以后还会有Layer.Transitioning等在内的动画,希望本文能抛砖引玉,带给大家不一

详解iOS开发中的转场动画和组动画以及UIView封装动画_IOS

一.转场动画 CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果.iOS比Mac OS X的转场动画效果少一点 UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果 属性解析: type:动画过渡类型 subtype:动画过渡方向 startProgress:动画起点(在整体动画的百分比) endProgress:动画终点(在整体动画的百分比) 转场动画代码示例 1.界面搭建 2.实现代码 复制代码