Block的示例学习
@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的示例学习的更多相关文章
- MIL 多示例学习 特征选择
一个主要的跟踪系统包含三个成分:1)外观模型,通过其可以估计目标的似然函数.2)运动模型,预测位置.3)搜索策略,寻找当前帧最有可能为目标的位置.MIL主要的贡献在第一条上. MIL与CT的不同在于后 ...
- html5游戏引擎phaser官方示例学习
首发:个人博客,更新&纠错&回复 phaser官方示例学习进行中,把官方示例调整为简明的目录结构,学习过程中加了点中文注释,代码在这里. 目前把官方的完整游戏示例看了一大半, brea ...
- Delphi之通过代码示例学习XML解析、StringReplace的用法(异常控制 good)
*Delphi之通过代码示例学习XML解析.StringReplace的用法 这个程序可以用于解析任何合法的XML字符串. 首先是看一下程序的运行效果: 以解析这样一个XML的字符串为例: <? ...
- 多示例学习 multiple instance learning (MIL)
多示例学习:包(bags) 和 示例 (instance). 包是由多个示例组成的,举个例子,在图像分类中,一张图片就是一个包,图片分割出的patches就是示例.在多示例学习中,包带有类别标签而示例 ...
- iOS block 闭包的学习
iOS 闭包 学习 理解: 1 . 闭包外界无法访问内部变量 ,它是一个独立的代码块. 2 . 闭包可以作为 一个方法 ,甚至局部变量 全局 变量 3 . 闭包 是一种引用类型 注 ...
- 黑马程序员_ Objective-c 之block、protocol学习笔记
一):block学习总结 block :用来保存一段代码. 1.block 特点: 1> Block封装了一段代码,可以在任何时候执行 2> Block可以作为函数或者函数的返回值, ...
- ApiDemos示例学习(1)——ApiDemos示例的导入
---恢复内容开始--- 今天准备开始写这个ApiDemos示例的学习日记了,放在网上以监督自己! 首先是导入该示例.如果我们在配置Android开发环境是,利用Android SDK 安装包中的SD ...
- OC学习之道:关于Block的初级学习
[objc] view plaincopy "code" class="OC"> // // main.m // Copyright (c) 2015 ...
- 通过示例学习JavaScript闭包
译者按: 在上一篇博客,我们通过实现一个计数器,了解了如何使用闭包(Closure),这篇博客将提供一些代码示例,帮助大家理解闭包. 原文: JavaScript Closures for Dummi ...
随机推荐
- hive中使用spark执行引擎的常用参数
set hive.execution.engine=spark;set hive.exec.parallel=true;set hive.exec.parallel.thread.number=8;s ...
- usb相关
https://github.com/daynix/UsbDk/tree/master/UsbDk 更应该关注下libusb
- CentOS7主机SSH连接失败
说来话长,之前20刀一年买bandwagon的廉价VPS,由于做了一些违法的事情,导致ip被封了. 检测ip被封的方法:进入ping.chinaz.com:输入IP地址,如果国外节点能够Ping通而国 ...
- nginx中ngx_http_ssl_module模块
此模块为HTTPS提供必要的⽀支持worker_processes auto;http {...server {listen 443 ssl;keepalive_timeout 70;ssl_prot ...
- python_网络编程socketserver模块实现多用户通信
服务端: import socketserver class MyServer(socketserver.BaseRequestHandler): def handle(self): #在这个函数里面 ...
- python_公共方法
1.计算长度 value = "wangdianchao" # 计算字符个数(长度) number = len(value) print(number) 2.索引取值 value ...
- 第107题:二叉树的层次遍历II
一. 问题描述 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 ...
- 设置 IntelliJ IDEA 主题
一.选择File选项====>Settings====>Appearance====>Theme====>三选一切换主题
- python执行ad_hoc
import shutil from collections import namedtuple from ansible.parsing.dataloader import DataLoader f ...
- 【题解】在你窗外闪耀的星星-C++
题目题目描述飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向后仰,柔和的晚霞照耀着你玫瑰色 ...