突然想起来上一次面试考官提问的一个问题:怎样创建一个菱形,并让它对应单击事件。能够开合的效果。

当时第一反应使用button来填充菱形的图片来实现,只是考官说,这样点击的区域不够灵敏,毕竟button是矩形的。当时确实被考官问住了,后来想起来,发现原来如此!

大家可能见过这个函数:setTransform:没错。我们实现的原理就是将正方形button旋转45度。变成矩形。结合精确的坐标计算,通过UIView动画来实现开合效果。

是不是非常easy呢~

假设你不想用button用imageView也能够的,增加手势识别来对应单击事件。贴代码:

    [_myImage setTransform:CGAffineTransformMakeRotation(M_PI_4)];
[_myImage2 setTransform:CGAffineTransformMakeRotation(M_PI_4)];
[_myImage3 setTransform:CGAffineTransformMakeRotation(M_PI_4)];
[_myImage4 setTransform:CGAffineTransformMakeRotation(M_PI_4)];

以上是将声明的四个image旋转45度。接下来是动画:

    [UIView animateWithDuration:0.7 animations:^{
//移动图片
_myImage.center = CGPointMake(_myImage.center.x, _myImage.center.y-length);
_myImage2.center = CGPointMake(_myImage2.center.x-length, _myImage2.center.y);
_myImage3.center = CGPointMake(_myImage3.center.x+length, _myImage3.center.y);
_myImage4.center = CGPointMake(_myImage4.center.x, _myImage4.center.y+length);
length = -length;
}]

移动每一个图片的中心还是比較方便的。这里我实现了四个不同的动画效果,详情请看代码。

下载地址

终于效果例如以下:

iOS----四方块 动画button实现的更多相关文章

  1. iOS开发UI篇—Button基础

    iOS开发UI篇—Button基础 一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状 ...

  2. iOS 视图,动画渲染机制探究

    腾讯Bugly特约作者:陈向文 终端的开发,首当其冲的就是视图.动画的渲染,切换等等.用户使用 App 时最直接的体验就是这个界面好不好看,动画炫不炫,滑动流不流畅.UI就是 App 的门面,它的体验 ...

  3. iOS关于CoreAnimation动画知识总结

    一:UIKit动画 在介绍CoreAnimation动画前先简单介绍一下UIKit动画,大部分简单的动画都可以使用UIKit动画实现,如果想实现更复杂的效果,则需要使用Core Animation了: ...

  4. IOS UIVIEW layer动画 总结(转)

    转发自:http://www.aichengxu.com/article/%CF%B5%CD%B3%D3%C5%BB%AF/16306_12.html   IOS UIVIEW layer动画 总结, ...

  5. IOS QuartzCore核心动画框架

    IOS QuartzCore核心动画框架 核心动画框架 使用核心动画需要引入的框架:#import CALayer: CoreAnimation CALayer就是UIView上的图层,很多的CALa ...

  6. Android中TweenAnimation四种动画切换效果

    点击每个按钮都会有对应的动画显示 activity代码: package com.tmacsky; import android.app.Activity; import android.os.Bun ...

  7. iOS 转场动画探究(一)

    什么是转场动画: 转场动画说的直接点就是你常见的界面跳转的时候看到的动画效果,我们比较常见的就是控制器之间的Push和Pop,还有Present和Dismiss的时候设置一下系统给我们的modalTr ...

  8. iOS 转场动画探究(二)

    这篇文章是接着第一篇写的,要是有同行刚看到的话建议从前面第一篇看,这是第一篇的地址:iOS 转场动画探究(一) 接着上一篇写的内容: 上一篇iOS 转场动画探究(一)我们说到了转场要素的第四点,把那个 ...

  9. iOS学习——核心动画

    iOS学习——核心动画 1.什么是核心动画 Core Animation(核心动画)是一组功能强大.效果华丽的动画API,无论在iOS系统或者在你开发的App中,都有大量应用.核心动画所在的位置如下图 ...

随机推荐

  1. 带有空格或tab的字符串的判断

    class test { public static void main(String[] args) { String a = " "; //带有空格的字符串 if ( a.is ...

  2. 数据库–Cobar分布式数据库集群MySQL中间件

    运行环境: 主机1:Ubuntu14.04 Desktop + MySQL5.5 + JDK 1.7(HP Z400)  内网IP地址:192.168.137.8 NODE1:Ubuntu 13.04 ...

  3. iOS布局分类

    1.线性布局: 2.集合布局: 3.单元布局: 需要考虑因素: 空间充足.空间不足时内容.尺寸的取舍.

  4. 梦想iOS版CAD控件2018.11.07更新

    下载地址: http://www.mxdraw.com/ndetail_10110.html 1.  增加iOS上的CAD绘图接口和使用例子 2.  增加动态交互使用例子 3.  把Android上改 ...

  5. CAD梦想看图6.0安卓版 20181022更新

    下载地址: http://www.mxdraw.com/ndetail_10109.html 1. 保存上次的文件浏览位置和绘制颜色 2. 调整工具条按钮位置和文字 3. 增加测量距离和面积时的捕捉功 ...

  6. xmpp之配置Xcode(1)

    介绍 ios上的XMPPFramework你能够在Xcode/iPhoneXMPP 目录找到,它只是实现了XMPP的一小部分功能. 下面主要介绍在开发XMPPFramework ios应用之前的配置工 ...

  7. springboot+idea+jsp 404问题

    我是这么解决的 对于单一项目,加入以下jar包即可. <!--前台页面的支持--> <dependency> <groupId>javax.servlet</ ...

  8. 浅谈对java-GC的理解

    前段时间,一个线上项目忽然很卡,通过监控,发现内存很高,果不其然在几个小时后,OOM.虽说有人很快处理好了.但我还是想站在我的角度,对这件事发表一下自己的观点. 内存溢出,多发生在项目上线后,而且在系 ...

  9. 泛型约束 ---类型参数上的限制(where T:class,new())

    今天遇到的一个问题,找到了解决办法,收藏以后记得看一下!

  10. mySQL and sqoop for ubuntu

    数据的导入导出 ——MySQL & sqoop in Ubuntu 1.完成搭建hadoop集群 2.安装MySQL sudo apt-get install mysql-server mys ...