以UIButton为例,创建一个类,继承于UIButton

/*页面的创建用storyboard*/                                      

.h文件   

@interface PTSRecommendButton : UIButton

- (void)viewTransform;

@end

.m文件

@implementation PTSRecommendButton

- (void)viewTransform {

//

[self.layer setAnchorPoint:CGPointMake(1, 0.5)];

CGRect btnFrame = self.frame;

//设置中心点  AnchorPoint默认是0.5

btnFrame.origin.x += btnFrame.size.width / 2 ;

self.frame = btnFrame;

//放大

[UIView transitionWithView:self duration:0.5 options:UIViewAnimationOptionAllowUserInteraction animations:^{

   //因为是button在动画之行的过程点击如果没有页面跳转的操作。要设置不能狗被点击 否则会引起动画方法的覆盖

//self.userInteractionEnabled = NO;

self.transform = CGAffineTransformMakeScale(1.2, 1.2);

} completion:^(BOOL finished) {

//还原中心点

[self.layer setAnchorPoint:CGPointMake(0.5, 0.5)];

CGRect btnFrame = self.frame;

btnFrame.origin.x -= btnFrame.size.width / 2 ;

self.frame = btnFrame;

//旋转

[UIView transitionWithView:self duration:0.25 options:UIViewAnimationOptionAllowUserInteraction animations:^{

//

self.transform = CGAffineTransformRotate(self.transform, M_PI*0.05);

} completion:^(BOOL finished) {

//反向旋转

[UIView transitionWithView:self duration:0.5 options:UIViewAnimationOptionAllowUserInteraction animations:^{

self.transform = CGAffineTransformRotate(self.transform, -M_PI*0.1);

} completion:^(BOOL finished) {

//回到最初旋转状态

[UIView transitionWithView:self duration:0.25 options:UIViewAnimationOptionAllowUserInteraction animations:^{

self.transform = CGAffineTransformRotate(self.transform, M_PI*0.05);

} completion:^(BOOL finished) {

//中心点还原

[self.layer setAnchorPoint:CGPointMake(1, 0.5)];

CGRect btnFrame = self.frame;

btnFrame.origin.x += btnFrame.size.width / 2 ;

self.frame = btnFrame;

//恢复初始的状态

[UIView transitionWithView:self duration:0.5 options:UIViewAnimationOptionAllowUserInteraction animations:^{

self.transform = CGAffineTransformIdentity;

} completion:^(BOOL finished) {

[self.layer setAnchorPoint:CGPointMake(.5, 0.5)];

CGRect btnFrame = self.frame;

//设置中心点  AnchorPoint默认是0.5

btnFrame.origin.x -= btnFrame.size.width / 2 ;

self.frame = btnFrame;

//self.userInteractionEnabled = YES ;

}];

}];

}];

}];

}];

}

@end

View的放大->旋转->还原动画的更多相关文章

  1. css3 一个六边形 和 放大旋转动画DEMO演示

    <!DOCTYPE html> <html> <head> <meta charset="gb2312"> <title> ...

  2. 教你实现类似于格瓦拉启动页中的放大转场动画(OC&Swift)

    教你实现类似于格瓦拉启动页中的放大转场动画(OC&Swift) 一.前言 用过格瓦拉电影,或者其他app可能都知道,一种点击按钮用放大效果实现转场的动画现在很流行,效果大致如下 在iOS中,在 ...

  3. WPF动态加载3D 放大-旋转-平移

    原文:WPF动态加载3D 放大-旋转-平移 WavefrontObjLoader.cs 第二步:ModelVisual3DWithName.cs public class ModelVisual3DW ...

  4. CSS3圆圈动画放大缩小循环动画效果

    代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...

  5. 纯CSS3悬停图标旋转导航动画代码

    分享一款纯CSS3悬停图标旋转导航动画代码.这是一款鼠标移到图标上动画旋转显示导航菜单.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="x_con ...

  6. 同时对view延时执行两个动画时候的现象

    同时对view延时执行两个动画时候的现象 对于view延时执行了两个动画后,会将第一个动画效果终止了,直接在第一个动画的view的最后的状态上接执行后续的动画效果,也就是说,我们可以利用这个特性来写分 ...

  7. 用css3实现摩天轮旋转的动画效果

    用css3实现摩天轮旋转的动画效果 1.CSS3 @keyframes 规则如需在 CSS3 中创建动画,您需要学习 @keyframes 规则.@keyframes 规则用于创建动画.在 @keyf ...

  8. CSS3轻松实现彩色旋转六面体动画

    一.效果预览: 二.基本思路: 1.首先这个一个自动触发的动画,因此应使用animation设计,包括自动组装和组装完成后自动旋转的过程: 2.当鼠标放上去的时候六个面及上面的字体均变色,应在六个面设 ...

  9. 实现放大转场动画 from cocoachina

    原文1:http://www.cocoachina.com/ios/20160318/15714.html 原文2:http://ningandjiao.iteye.com/blog/2049105 ...

随机推荐

  1. Trie树/字典树题目(2017今日头条笔试题:异或)

    /* 本程序说明: [编程题] 异或 时间限制:1秒 空间限制:32768K 给定整数m以及n个数字A1,A2,..An,将数列A中所有元素两两异或,共能得到n(n-1)/2个结果,请求出这些结果中大 ...

  2. 【Tools】ubuntu16.04升级Python2.7到3.5

    最近开始学Python,但我发现我ubuntu16.04上默认的Python是2.7,并不是3,x 于是准备Python升级,记录安装过程给初学者参考一下. 1.先取得管理员权限, 个人习惯先取得管理 ...

  3. iOS "此证书由未知颁发机构签名"此问题的解决方法

    前段时间制作证书时把以前钥匙串中的证书全删除了,然后在制作新证书的时候就出现了"此证书由未知颁发机构签名"的红色警告,通过查找资料发现出现此问题的原因是:我把钥匙串中的此证书给删除 ...

  4. Xcode iOS布局autolayout和sizeclass的使用

    一.关于自动布局(Autolayout) 在Xcode中,自动布局看似是一个很复杂的系统,在真正使用它之前,我也是这么认为的,不过事实并非如此. 我们知道,一款iOS应用,其主要UI组件是由一个个相对 ...

  5. PHP将HTML的内容保存成word文档

    <?php class word { function start() { ob_start(); echo '<html xmlns:o="urn:schemas-micros ...

  6. 读取Pdm文件内容(含源码)

    Pdm文件,就是PowerDesigner软件生成的文件,用来设计数据库表结构非常适合.其实,它的文件存储格式就是Xml,网上有很多代码,可以读取pdm文件内容.代码可以使用,但一般只能读取简单的pd ...

  7. ubuntu16.04~qt 5.8无法输入中文

    编译fcitx-qt需要cmake,安装cmake命令,如果已经安装,请略过. sudo apt-get install cmake 安装 fcitx-libs-dev sudo apt-get in ...

  8. composer安装出现proc_open没有开启问题的解决方案

    今天在安装下载项目的时候,使用composer来安装依赖.遇到了 The Process class relies on proc_open, which is not available on yo ...

  9. 一不小心把Mysql数据库的root的账号的权限给弄没啦,该怎么办

    别急啊,现在只要你还能连接到Mysql,就问题不大! 首先,连接道Mysql,这里用Navicat进行讲解. 说明:root@localhost和root@127.0.0.1不是一个账号,也不是一回事 ...

  10. 关于Mysql5.7高版本group by新特性报错

    一个项目的开发到测试上线运营,团队对项目的管理不成熟会影响项目的开发效率.由于项目是我刚接手,独自在Centos搭建PHP环境,所以就考虑使用高版本,选择了Mysql5.7,本地开发环境还是Windo ...