主要参考:http://blog.csdn.net/huifeidexin_1/article/details/7597868  http://www.2cto.com/kf/201409/335661.html

如果动画不放在按钮事件中,直接放到viewDidLoad里,程序首先执行这个controller,这时动画是不会显示的,原因:出现这个问题是因为开机时候系统有个动画,系统动画和这个动画重复了,解决方案:

1.将动画写在按钮事件中

2.利用定时器

//
//  ViewController.m
//  动画
//
//  Created by City--Online on 15/4/1.
//  Copyright (c) 2015年 City--Online. All rights reserved.
//

#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];

}
-(void)btnclick:(id)sender
{
    //开启一个动画 事务型
    [UIView beginAnimations:@"test" context:nil];
    //设置动画延迟执行时间 单位秒
    [UIView setAnimationDelay:0];
     //设置动画块中的动画效果是否自动重复播放
    [UIView setAnimationRepeatAutoreverses:YES];
    //设置动画重复的次数
    [UIView setAnimationRepeatCount:0];
     //设置代理 未设置的时候下面的setAnimationDidStopSelector、setAnimationWillStartSelector不起作用
    [UIView setAnimationDelegate:self];
    //设置动画开始的方法
    [UIView setAnimationDidStopSelector:@selector(viewstop)];
    //设置动画结束时的方法
    [UIView setAnimationWillStartSelector:@selector(viewstart)];
    /*typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
        UIViewAnimationTransitionNone,
        UIViewAnimationTransitionFlipFromLeft, //左翻转
        UIViewAnimationTransitionFlipFromRight,//右翻转
        UIViewAnimationTransitionCurlUp,       //向上折转
        UIViewAnimationTransitionCurlDown,     //向下折转
    };*/
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES];
    //设置动画曲线,控制动画速率 枚举类型
    /*typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {
        UIViewAnimationCurveEaseInOut,         // slow at beginning and end
        UIViewAnimationCurveEaseIn,            // slow at beginning
        UIViewAnimationCurveEaseOut,           // slow at end
        UIViewAnimationCurveLinear
    };*/
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];
    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;
    btn.backgroundColor=[UIColor blackColor];
    //提交动画
    [UIView commitAnimations];
//    [UIView animateWithDuration:2 animations:^{
//        btn.frame=CGRectMake(80, 30, 50, 50);
//        btn.backgroundColor=[UIColor blackColor];
//    }];
}
-(void)viewstop
{
    NSLog(@"viewstop");
}
-(void)viewstart
{
    NSLog(@"viewstart");
}

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

@end

注意事项:在动画中不能通过btn.frame.origin.x来改变,需要给btn.frame重新赋值

UIView动画上的更多相关文章

  1. 转一篇简洁的UIView动画编程方法

    iOS  中的 UIView 动画编程其实还是很简单的,像 CSS3 一样,在给定的时间内完成状态连续性的变化呈现.比如背景色,Frame 大小,位移.翻转,特明度等. 以前我使用的编程方式都是用下面 ...

  2. UIView动画效果

    做出UI界面,实现程序功能,是重中之重,但是通过动画提升使用体验,一般人应该不会拒绝吧. 那么问题又来了,怎么做? 一: 稳扎稳打: 一步一步来吧,毕竟,心急吃不了热豆腐. 1.开启一个动画 2,设置 ...

  3. 个人学习对UIView动画的总结

    我的博客之前已经开通五个月了,但是一直没有写东西.一是不敢写,二是也不知道写啥.毕竟是一个刚刚入行大半年的菜鸟,现在总想通过各种办法提高自己.之前总感觉用到一些东西,只是当时搞懂了一点,加上并没有总结 ...

  4. UIView动画学习笔记

    UIView的动画是通过修改控件的属性来达到动画的效果,如:渐变, 移动. 废话不多说,直接上代码: - (void)loadView{ [super loadView]; _leftView = [ ...

  5. iOS动画篇:UIView动画

    iOS的动画效果一直都很棒很,给人的感觉就是很炫酷很流畅,起到增强用户体验的作用.在APP开发中实现动画效果有很多种方式,对于简单的应用场景,我们可以使用UIKit提供的动画来实现. UIView动画 ...

  6. iOS之UIview动画

    一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成, ...

  7. iOS&nbsp;动画总结—UIView动画

    1.概述 UIKit直接将动画集成到UIView类中,实现简单动画的创建过程.UIView类定义了几个内在支持动画的属性声明,当这些属性发生改变时,视图为其变化过程提供内建的动画支持. 执行动画所需要 ...

  8. iOS动画1 — UIView动画

    iOS动画基础是Core Animation核心动画.Core Animation是iOS平台上负责图形渲染与动画的基础设施.由于核心动画的实现比较复杂,苹果提供了实现简单动画的接口—UIView动画 ...

  9. UIView动画补充

    我自己的总结: // 第一种: Duration 时间 animations:动画体 /* [UIView animateWithDuration:4 animations:^{ CGRect rec ...

随机推荐

  1. hive的 order by & distribute by & cluter by

    我们应该都清楚order by 的含义: 根据某个字段对输出的数据排序,因为只有一个reducer,所以查询效率较慢. 那么hive中,另外两个排序,distribute by和cluster by的 ...

  2. yum-163源配置

    原文:http://mirrors.163.com/.help/centos.html CentOS镜像使用帮助 收录架构 i386 x86_64 SRPMS 收录版本:所有版本更新时间:每4小时更新 ...

  3. C++中的四种类型转换

    //1.常见的类型转换,使用static_cast float f = 1.234; int i =static_cast<int>(f);//等价于 int i = (int)f; // ...

  4. 第一天:html+JavaScript函数

    testjstry1.html   知识点1:求多组数据的和 function demo(a,b){ var sum=a+b; return sum;}var v1=demo(20,10);var v ...

  5. [php] php - json_encode 函数

    json_encode()函数, $arr= array("key"=>null); echo json_encode($arr);{"key":null ...

  6. 微赞微擎V0.8以上版本:【数据库读写分离】实战教程 [复制链接]

    http://www.efwww.com/forum.php?mod=viewthread&tid=4870 马上注册,下载更多源码,让你轻松玩转微信公众平台. 您需要 登录 才可以下载或查看 ...

  7. make编译

    Makefile 值得一提的是,在Makefile中的命令,必须要以[Tab]键开始. 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了 ...

  8. ubuntu下sqlite命令

    介绍 Linux上的小巧的数据库,一个文件就是一个数据库. 安装Sqlite3 要安装 Sqlite3,可以在终端提示符后运行下列命令: sudo apt-get install sqlite3 检查 ...

  9. 【BZOJ2882】 工艺(SAM)

    传送门 BZOJCH 洛谷 Solution 这个东西要求的不就是最小表示法吗? 把原串复制一遍然后都加到后缀自动机里面去. 用个map跑一下,这样子可以保证每一次选的是最小字典序的. 然后跑\(n\ ...

  10. Mac下通过 brew 安装 Apache 和 PHP

    Mac 自带的是php5.6 ,这里讲一下如果要升级到php7.1需要做的. 1.安装brew https://brew.sh/(官网有提供安装命令 建议使用) ruby -e "$(cur ...