@interface ViewController ()

 @property (weak, nonatomic) IBOutlet UIButton *btn;

 - (IBAction)reset:(id)sender;
- (IBAction)run:(id)sender;
- (IBAction)rotate:(id)sender;
- (IBAction)scale:(id)sender; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; } //定义函数,参数是block类型 无返回值,无参数的block - (void)btnClickWithBlock:(void (^)())block
{
// 0.动画(头部-开始动画)
[UIView beginAnimations:nil context:nil];
// 设置动画的执行时间
[UIView setAnimationDuration:1.0]; //block的调用
block(); // 1.动画(尾部-提交动画-执行动画)
[UIView commitAnimations];
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} //重置
- (IBAction)reset:(id)sender { [self btnClickWithBlock:^{
_btn.transform = CGAffineTransformIdentity;
}];
} //行走
- (IBAction)run:(id)sender { [self btnClickWithBlock:^{ NSLog(@"self = %@",self); //表示此控制器 // 1.先取出frame
CGPoint tempCenter = _btn.center; // 2.取出按钮的tag标记
NSInteger tag = [sender tag]; switch (tag) {
case : tempCenter.y -= kDelta; break; case : tempCenter.x -= kDelta;
break; case : tempCenter.y += kDelta;
break; case : tempCenter.x += kDelta;
break; default:
break;
} // 3.重新赋值按钮的frame
_btn.center = tempCenter; }];
} //旋转
- (IBAction)rotate:(id)sender { [self btnClickWithBlock:^{
NSInteger tag = [sender tag];
if ( == tag) { // 左
_btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_4 * -);
} else { // 右
_btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_4 * );
}
}]; } //缩放
- (IBAction)scale:(id)sender { [self btnClickWithBlock:^{
CGFloat scale = [sender tag] == ? 1.2 : 0.8;
_btn.transform = CGAffineTransformScale(_btn.transform, scale, scale);
}]; }

Block的示例学习的更多相关文章

  1. MIL 多示例学习 特征选择

    一个主要的跟踪系统包含三个成分:1)外观模型,通过其可以估计目标的似然函数.2)运动模型,预测位置.3)搜索策略,寻找当前帧最有可能为目标的位置.MIL主要的贡献在第一条上. MIL与CT的不同在于后 ...

  2. html5游戏引擎phaser官方示例学习

    首发:个人博客,更新&纠错&回复 phaser官方示例学习进行中,把官方示例调整为简明的目录结构,学习过程中加了点中文注释,代码在这里. 目前把官方的完整游戏示例看了一大半, brea ...

  3. Delphi之通过代码示例学习XML解析、StringReplace的用法(异常控制 good)

    *Delphi之通过代码示例学习XML解析.StringReplace的用法 这个程序可以用于解析任何合法的XML字符串. 首先是看一下程序的运行效果: 以解析这样一个XML的字符串为例: <? ...

  4. 多示例学习 multiple instance learning (MIL)

    多示例学习:包(bags) 和 示例 (instance). 包是由多个示例组成的,举个例子,在图像分类中,一张图片就是一个包,图片分割出的patches就是示例.在多示例学习中,包带有类别标签而示例 ...

  5. iOS block 闭包的学习

    iOS  闭包 学习 理解: 1 .   闭包外界无法访问内部变量 ,它是一个独立的代码块. 2 .   闭包可以作为 一个方法 ,甚至局部变量  全局 变量 3 .   闭包 是一种引用类型   注 ...

  6. 黑马程序员_ Objective-c 之block、protocol学习笔记

    一):block学习总结 block :用来保存一段代码. 1.block 特点:  1> Block封装了一段代码,可以在任何时候执行   2> Block可以作为函数或者函数的返回值, ...

  7. ApiDemos示例学习(1)——ApiDemos示例的导入

    ---恢复内容开始--- 今天准备开始写这个ApiDemos示例的学习日记了,放在网上以监督自己! 首先是导入该示例.如果我们在配置Android开发环境是,利用Android SDK 安装包中的SD ...

  8. OC学习之道:关于Block的初级学习

    [objc] view plaincopy "code" class="OC"> // //  main.m //  Copyright (c) 2015 ...

  9. 通过示例学习JavaScript闭包

    译者按: 在上一篇博客,我们通过实现一个计数器,了解了如何使用闭包(Closure),这篇博客将提供一些代码示例,帮助大家理解闭包. 原文: JavaScript Closures for Dummi ...

随机推荐

  1. mysql全量和增量备份详解(带脚本)

    在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 下面对这种备份方案详细说明下:1.MySQLdump增量备份配置执行增量备份的前提条件是M ...

  2. Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) B2. TV Subscriptions (Hard Version)

    链接: https://codeforces.com/contest/1247/problem/B2 题意: The only difference between easy and hard ver ...

  3. 爬取淘宝商品数据并保存在excel中

    1.re实现 import requests from requests.exceptions import RequestException import re,json import xlwt,x ...

  4. Proxy详解

    一.Proxy基础 1. 什么是Proxy? Proxy是一个构造函数,可以通过它生成一个Proxy实例. const proxy = new Proxy(target, handler); // t ...

  5. IDEA工具的安装、破解与配置

    一.什么是IDEA? IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境,是目前最好用的java集成开发工具.他最突出的功能是调试(Debug),可以对Java代码,Java ...

  6. leetcode解题报告(5):Longest Consecutive Sequence

    描述 Given an unsorted array of integers, find the length of the longest consecutive elements sequence ...

  7. Noip2012 提高组 Day1 T1 Vigenère 密码

    题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...

  8. CF1153F Serval and Bonus Problem 【期望】

    题目链接:洛谷 作为一只沉迷数学多年的蒟蒻OIer,在推柿子和dp之间肯定要选推柿子的! 首先假设线段长度为1,最后答案乘上$l$即可. 对于$x$这个位置,被区间覆盖的概率是$2x(1-x)$(线段 ...

  9. Java面向对象2(G~J)

    G    织女的红线(SDUT 2240) import java.util.Scanner; import java.text.DecimalFormat; class Sum { double x ...

  10. vue项目,前端导出excel

    今天研究一下前端如何导出excel,边查边实践,边记录 1.安装依赖库 xlsx:这是一个功能强大的excel处理库,但是上手难度也很大,还涉及不少二进制的东西 file-saver:ES5新增了相关 ...