#import "ViewController.h"

 #define kDelta 60

 @interface ViewController ()

 @end

 @implementation ViewController

 #pragma mark 封装动画效果的代码
- (void)btnClickWithBlock:(void (^)())block
{
// 实现动画(渐进变化)
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0]; block(); [UIView commitAnimations];
} // CGAffineTransform transform
// 表示空间的形变状态(旋转角度、缩放比例)
#pragma mark 还原为原始状态
- (IBAction)reset:(id)sender { [self btnClickWithBlock:^{
_btn.transform = CGAffineTransformIdentity;
}];
} #pragma mark 控制按钮的左右旋转
- (IBAction)rotate:(id)sender {
// tag可以用来区分控件
[self btnClickWithBlock:^{
CGFloat angle = [sender tag]== ? -M_PI_4 : M_PI_4;
_btn.transform = CGAffineTransformRotate(_btn.transform, angle);
}];
} #pragma mark 控制按钮的左右上下移动
- (IBAction)run:(id)sender { [self btnClickWithBlock:^{
CGRect imageFrame = _btn.frame;
NSInteger tag = [sender tag];
switch (tag) {
case :
imageFrame.origin.y -= kDelta;
break;
case :
imageFrame.origin.x += kDelta;
break;
case :
imageFrame.origin.y += kDelta;
break;
case :
imageFrame.origin.x -= kDelta;
break; default:
break;
}
_btn.frame = imageFrame;
}];
} #pragma mark 控制按钮的缩放
- (IBAction)zoom:(id)sender { [self btnClickWithBlock:^{
CGFloat scale = [sender tag]== ? 1.2 : 0.8;
_btn.transform = CGAffineTransformScale(_btn.transform, scale, scale);
}];
}
@end

主要运用的知识点:

控件的属性:

1.frame

  1)标识控件的位置和尺寸(以父控件的左上角为坐标原点)

  2)修改这个属性,可以调整控件的位置和尺寸

2.center

  1)表示控件的中点(以父控件的左上角为坐标原点)

  2)修改这个属性,可以调整控件的位置

3.bounds

  1)表示控件的位置和尺寸(以自己的左上角为坐标原点,位置永远是(0,0))

  2)修改这个属性,只能调整控件的尺寸

4.tag

  1)表示控件的标识

  2)通过不同标识可以区分不同的控件

5.transform

  1)表示控件的形变状态(旋转角度、缩放比例)

    a)CGAffineTransformRotate:旋转角度

    b)CGAffineTransformScale:缩放尺寸大小

    c)还原操作:CGAffineTransformIdentity

  2)创建CGAffineTransform的函数
    * CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
    创建一个x、y方向的缩放比例分别为sx、sy的形变值

    * CGAffineTransformMakeRotation(CGFloat angle)
    创建一个旋转角度为angle的形变值,注意角度值为弧度制

    * CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy)
    在形变值t的基础上,再进行缩放,x、y方向的缩放比例分别为sx、sy,然后返回一个新的形变值

    * CGAffineTansformRotate(CGAffineTransform t, CGFloat angle)
    在形变值t的基础上,再进行旋转,旋转角度为angle,然后返回一个新的形变值

6)block的简单运用

7)动画效果的实现

  参见代码

界面效果图:

01-实现图片按钮的缩放、动画效果(block的初步应用)的更多相关文章

  1. HTML5+javascript实现图片加载进度动画效果

    在网上找资料的时候,看到网上有图片加载进度的效果,手痒就自己也写了一个. 图片加载完后,隐藏loading效果. 想看加载效果,请ctrel+F5强制刷新或者清理缓存. 效果预览:   0%   // ...

  2. AnimCheckBox按钮点击动画效果《IT蓝豹》

    AnimCheckBox按钮点击动画效果 AnimCheckBox按钮点击动画效果,点击选中后勾选框选择效果,很不错的动画功能.项目来源:https://github.com/lguipeng/Ani ...

  3. UILabel的缩放动画效果

    UILabel的缩放动画效果 效果图 源码 https://github.com/YouXianMing/Animations // // ScaleLabel.h // Animations // ...

  4. AndroidUI 视图动画-缩放动画效果 (ScaleAnimation)

    放动画效果,可以使用ScaleAnimation: <Button android:id="@+id/btnScale2" android:layout_width=&quo ...

  5. gallery利用代码定位图片并且不丢失动画效果

    安卓中,利用gallery.setSelection(position);可以手动定位图片 但是众所周知会丢失动画效果 即使是用gallery.setSelection(position,true); ...

  6. 超炫的Button按钮展开弧形动画效果

    ----------------------收藏备用  ------------------------------- 代码下载:http://download.csdn.net/detail/qq2 ...

  7. 仿Inshot分享页图片圆形展开缩放动画

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/221 圆形展开缩放动画 关键代码: final Anima ...

  8. transform:scale()妙用——当下拉列表,图片无缝拉升 动画效果

      遇到问题 昨天在做音乐播放器的时候,遇到了一个这样的界面: 当下拉scroll区域列表的时候,图片会按照比例无缝连接放大,就想下面的效果图一样 分析问题 从上图可一看到,页面主要由两个div组成, ...

  9. 原生html,css+js写下载按钮有提示动画效果的落地页

    <!DOCTYPE html> <html lang="en"> <head>   <meta charset="UTF-8&q ...

随机推荐

  1. git重写历史记录

    1 修改上一次历史提交,替换掉上次的提交git commit --amend 2 git rebase 将不同分支路径合并到同一分支路径上eg:将master分支上的 conflic rebase合并 ...

  2. [ActionScript 3.0] 安全沙箱的类型sandboxType,判断当前程序是AIR还是web程序

    表示其中正在运行执行调用的 文件的安全沙箱的类型. Security.sandboxType 具有下列值之一: remote (Security.REMOTE):此文件来自 Internet URL, ...

  3. 【转】深入理解Java:注解(Annotation)自定义注解入门

    http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的me ...

  4. jdbc调用sparksql

    将hive-site.xml拷贝到spark目录下conf文件夹 local模式 spark-sql --driver-class-path /usr/local/hive-1.2.1/lib/mys ...

  5. 【转】关系映射文件***.hbm.xml详解

    http://blog.sina.com.cn/s/blog_7ffb8dd5010144yo.html 附.Oracle使用标准.可变长度的内部格式来存储数字.这个内部格式精度可以高达38位. NU ...

  6. 记事本源代码 python3

    已实现基本功能,显示行号功能暂时实现不了(后面学会了再加,右下角可以实现定位光标所在行.列) 可能会有些bug 1 from tkinter import * from tkinter.message ...

  7. 一个构建XML对象的js库

    初学javascript,学习中用到在IE中建立XML对象,于是写了一个简单的“库”.因为水平所限,肯定会有不恰当的地方,欢迎指正. 如果大家有知道现存的更好的东西,非常希望大家能将它推荐给我. 代码 ...

  8. Hibernate和JDBC、EJB比较

    参考:http://m.blog.csdn.net/article/details?id=7228061 一.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App S ...

  9. university, school, college, department, institute的区别

    这些个词没有太大区别,有时候有些词是可以通用的,而有些用法则是随着地域时间的不同而变迁. 一般说来,college译作“学院”,它是university (综合性大学)的一个组成部分,例如,一所综合大 ...

  10. JFrame 实现全屏透明背景

    JFrame f=new JFrame(); f.setUndecorated(true);        f.setBackground(new Color(0,0,0,0));        To ...