以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. window 下生成NodeJs(v8.9.3) 的 VS2015 解决方案node.sln

    window 下生成NodeJs(v8.9.3) 的 VS2015 解决方案node.sln 使用步骤 也可以参照 github: https://github.com/nodejs/node/blo ...

  2. NOI2009 二叉查找树 【区间dp】

    [NOI2009]二叉查找树 [问题描述] 已知一棵特殊的二叉查找树.根据定义,该二叉查找树中每个结点的数据值都比它左子树结点的数据值大,而比它右子树结点的数据值小.另一方面,这棵查找树中每个结点都有 ...

  3. 【ZOJ2760】How Many Shortest Path

    How Many Shortest Path 标签: 网络流 描述 Given a weighted directed graph, we define the shortest path as th ...

  4. abp允许跨域代码,时间转换为固定格式,本地时间

     在Global的 Application_BeginRequest方法中: Thread.CurrentThread.CurrentCulture = new CultureInfo("z ...

  5. hexo博客简易搭建教程

    什么是Hexo Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页.官网 Hexo安装 安装 在安装Hex ...

  6. C# 托管堆和垃圾回收器GC

    这里我们讨论的两个东西:托管堆和垃圾回收器,前者是负责创建对象并控制这些对象的生存周期,后者负责回收这些对象. 一.托管堆分配资源 CLR要求所有的对象都从托管堆分配.进程初始化时,CLR划出一个地址 ...

  7. js中判断数组中是否含有某个字符串方法

    1.两个数组间互相校验 Var  inArray = function(arr, item) { for(var i = 0; i < arr.length; i++) { if(arr[i] ...

  8. 和scikit-learn打个招呼

    1.先装对应的库.不能偷懒,都得装,不然飞不起来. pip install scikit-learn pip install numpy pip install scipy 2.测试如下代码. imp ...

  9. Hive数据倾斜总结

    倾斜的原因: 使map的输出数据更均匀的分布到reduce中去,是我们的最终目标.由于Hash算法的局限性,按key Hash会或多或少的造成数据倾斜.大量经验表明数据倾斜的原因是人为的建表疏忽或业务 ...

  10. Ambari安装小记

    在Ambari配置过程中,组件的定制与分配很重要