iOS开发transform的使用
//
// ViewController.m
// 18-transform的使用
#import "ViewController.h"
@interface ViewController ()
@property(nonatomic,assign)CGFloat ty;
- (IBAction)up:(id)sender;
- (IBAction)big;
- (IBAction)rotate;
- (IBAction)reset;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/**
向上向下向左向右
@param sender <#sender description#>
*/
- (IBAction)up:(id)sender {
// NSLog(@"up");
//通过父控件拿到按钮
//可以通过父类拿到子类
UIButton *headBtn = (UIButton *)[self.view viewWithTag:10];
//2 通过fransform让头像向上走
//tx 水平方向移动的范围
//ty 竖直方向移动的范围
/**
CGAffineTransformMakeTranslation
使用这个方法进行设置,每次变化都是以原始值进行
变化的
@param 0 <#0 description#>
@param -10 <#-10 description#>
@return <#return value description#>
*/
//方法1: 开辟成员变量耗性能
// self.ty-= 10;
// headBtn.transform = CGAffineTransformMakeTranslation(0, self.ty);
/**
方法2:
CGAffineTransformTranslate
使用这个方法每次都是以CGAffineTransform 值进行变化的
@param t#> <#t#> description#>
@param tx#> <#tx#> description#>
@param ty#> <#ty#> description#>
@return <#return value description#>
*/
headBtn.transform = CGAffineTransformTranslate(headBtn.transform, 0, -10);
}
//放大 缩小
- (IBAction)big {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
UIButton *headBtn = (UIButton *)[self.view viewWithTag:10];
headBtn.transform = CGAffineTransformScale(headBtn.transform, 1.5, 1.5);
[UIView commitAnimations];
}
/**
旋转
*/
- (IBAction)rotate {
UIButton *headBtn = (UIButton *)[self.view viewWithTag:10];
headBtn.transform = CGAffineTransformRotate(headBtn.transform, M_PI_4);
}
/**
复位
*/
- (IBAction)reset {
UIButton *headBtn = (UIButton *)[self.view viewWithTag:10];
headBtn.transform = CGAffineTransformIdentity;
}
@end
iOS开发transform的使用的更多相关文章
- Hello_IOS ios开发transform属性
#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutl ...
- ios开发transform属性
#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutl ...
- iOS开发 -------- transform属性(形变)
一 transform属性 在OC中,通过transform属性可以修改对象的平移,比例和旋转角度 常用的创建transform结构体的方法分两大类 (1) 创建"基于控件初始位置&qu ...
- iOS开发基础篇-transform属性
一. transform 属性 在OC中,通过 transform 属性可以修改对象的平移.缩放比例和旋转角度. 1)创建“基于控件初始位置”的形变 CGAffineTransformMakeRot ...
- iOS开发系列--打造自己的“美图秀秀”
--绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz ...
- iOS开发系列--Swift进阶
概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...
- iOS开发——创建你自己的Framework
如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件.然而,这种方法并不是很优雅.它会暴露所有的实现细节,而这些实现你可能并不想开源出来.此外,开发者也可能并不想看到你的所有代码,因为他们可 ...
- iOS开发系列--无限循环的图片浏览器
--UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件 ...
- ios开发中的小技巧
在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...
随机推荐
- 过滤IP地址的正则表达式
现场需求,过滤 指定IP段位的相关话单,收集看看用正则表达式怎么写, 原文地址:http://www.cnblogs.com/kongxianghai/p/3995463.html 检测IP地址的正则 ...
- NoSQL 非关系数据库
NoSQL 数据库的学习 Redis的Windows版本安装 待整理 redis 安装 关于分布式的网站介绍 NOSQL 几个网页 认识MongoDB Mongodb实现副本集和Mongodb副本集的 ...
- ExpandoObject与DynamicObject的使用 RabbitMQ与.net core(一)安装 RabbitMQ与.net core(二)Producer与Exchange ASP.NET Core 2.1 : 十五.图解路由(2.1 or earler) .NET Core中的一个接口多种实现的依赖注入与动态选择看这篇就够了
ExpandoObject与DynamicObject的使用 using ImpromptuInterface; using System; using System.Dynamic; names ...
- appium简明教程(9)——如何获取android app的Activity
有时候在appium的Desired Capabilities中需要指定被测app的appActivity,下面的方法可能会对你有所帮助. 方法一 如有你有待测项目的源码,那么直接查看源码就好.如果没 ...
- Java Nashorn--Part 2
在命令行中执行 JavaScript 现在我们有一个 my_script.js 文件,想在 Nashorn 下执行,则需要在命令行下执行该命令: jrunscript my_script.js jru ...
- Springboot使用junit
1. 首先要下载配套的spring-boot-starter-test包,注意版本要对应. compile("org.springframework.boot:spring-boot-sta ...
- hibernate的hql查询语句总结
这篇随笔将会记录hql的常用的查询语句,为日后查看提供便利. 在这里通过定义了三个类,Special.Classroom.Student来做测试,Special与Classroom是一对多,Class ...
- jmeter 压测duobbo接口,施压客户端自己把自己压死了
jmeter 压测duobbo接口,jmeter代码不合理,导致每执行一次请求,会调用一次消耗内存的实例化.导致越压越慢,请求发不出去.这个时候需要考虑修改代码了. 截图中,tps越来越少. 原来初始 ...
- unity, Collider2D.bounds的一个坑
Note that this will be an empty bounding box if the collider is disabled or the game object is inact ...
- Vue(二):调试神器vue-devtools安装和使用
前言 vue-devtools是一款基于chrome游览器的插件,用于调试vue应用,这可以极大地提高我们的调试效率.接下来我们就介绍一下vue-devtools的安装. 安装 1.chrome商店直 ...