一、 transform 属性

  在OC中,通过 transform 属性可以修改对象的平移、缩放比例和旋转角度。

  1)创建“基于控件初始位置”的形变

   CGAffineTransformMakeRotation ——旋转

   CGAffineTransformMakeTranslation ——平移

   CGAffineTransformMakeScale ——缩放

  2)创建“基于 transform 参数”的形变

   CGAffineTransformTranslate

   CGAffineTransformScale

   CGAffineTransformRotate

补充:在OC中,所有跟角度相关的数值,都为弧度制 180度 = M_PI , 45度 = M_PI_4 。

  正数表示顺时针旋转,负数表示逆时针旋转。

  “基于 transform 参数”的形变可以基于控件上一次的状态进行叠加形变,如先旋转再平移。 

二、示例

  用代码在 viewDidLoad 中添加控制旋转的按钮:

     //向左旋转按钮
UIButton *leftrotatebtn = [UIButton buttonWithType:UIButtonTypeCustom];
leftrotatebtn.frame = CGRectMake(, , , );
[leftrotatebtn setTitle:@"向左旋转" forState:UIControlStateNormal];
[leftrotatebtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[leftrotatebtn setTag:];
[self.view addSubview:leftrotatebtn];
//添加按钮的单击事件
[leftrotatebtn addTarget:self action:@selector(rotate:) forControlEvents:UIControlEventTouchUpInside]; //向右旋转按钮
UIButton *rightrotatebtn = [UIButton buttonWithType:UIButtonTypeCustom];
rightrotatebtn.frame = CGRectMake(, , , );
[rightrotatebtn setTitle:@"向右旋转" forState:UIControlStateNormal];
[rightrotatebtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[rightrotatebtn setTag:];
[self.view addSubview:rightrotatebtn];
//添加按钮的单击事件
[rightrotatebtn addTarget:self action:@selector(rotate:) forControlEvents:UIControlEventTouchUpInside];

   viewDidLoad 是视图加载完成后调用的方法,通常在此方法中执行视图控制器的初始化工作。

  添加旋转按钮响应事件:

 - (void)rotate:(id)sender{
UIButton *button = (UIButton *)sender;
if (button.tag) {
//self.headImageView.transform = CGAffineTransformMakeRotation(-M_PI_4);
//逆时针旋转
self.headImageView.transform = CGAffineTransformRotate(self.headImageView.transform, -M_1_PI);
} else {
//顺时针旋转
self.headImageView.transform = CGAffineTransformRotate(self.headImageView.transform, M_PI_4);
}
}

参考博客:iOS开发UI篇—transframe属性(形变)

示例代码链接:http://pan.baidu.com/s/1skkbcw1

iOS开发基础篇-transform属性的更多相关文章

  1. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇—transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  2. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇—transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  3. 李洪强iOS开发Swift篇—09_属性

    李洪强iOS开发Swift篇—09_属性 一.类的定义 Swift与Objective-C定义类的区别 Objective-C:一般需要2个文件,1个.h声明文件和1个.m实现文件 Swift:只需要 ...

  4. iOS开发基础篇-Button基础

    一.简单介绍  UIButton 的功能:响应用户操作.显示文字.显示图片.调整内部图片和文字的位置. 二. UIButton 的状态  UIControlStateNormal :普通状态,为默认情 ...

  5. iOS开发基础篇-手写控件

    一.手写控件的步骤 1)使用相应的控件类创建控件对象: 2)设置该控件的各种属性: 3)添加空间到视图中: 4)如果是 UIButton 等控件,还需考虑控件的单击事件等: 二.添加 UIButton ...

  6. iOS开发——基础篇——iOS开发 Xcode8中遇到的问题及改动

      iOS开发 Xcode8中遇到的问题及改动 新版本发布总会有很多坑,也会有很多改动. 一个一个填吧... 一.遇到的问题 1.权限以及相关设置 iOS10系统下调用系统相册.相机功能,或者苹果健康 ...

  7. IOS开发基础篇--CAShapeLayer的strokeStart和strokeEnd属性

    http://blog.csdn.net/yixiangboy/article/details/50662704 一.案例演示 最近有一个小需求,就是要做一个圆形进度条,大概样子如下: . 在不知道有 ...

  8. iOS开发UI篇 -- UISearchBar 属性、方法详解及应用(自定义搜索框样式)

    很多APP都会涉及到搜索框,苹果也为我们提供了默认的搜索框UISearchBar.但实际项目中我们通常需要更改系统默认搜索框的样式.为了实现这一目标,我们需要先搞懂 UISearchBar 的属性及方 ...

  9. ios开发UI篇—UIScrollView属性及其代理方法

    一.UIScrollView是什么? 1.UIScrollView是滚动的view,UIView本身不能滚动,子类UIScrollview拓展了滚动方面的功能. 2.UIScrollView是所有滚动 ...

随机推荐

  1. springboot情操陶冶-web配置(四)

    承接前文springboot情操陶冶-web配置(三),本文将在DispatcherServlet应用的基础上谈下websocket的使用 websocket websocket的简单了解可见维基百科 ...

  2. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU特性介绍(3)- 命名规则

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的命名规则. 打开任何一款i.MX RT系列芯片的Data Sheet均可找到如下命名规则表,以i.MX ...

  3. http无状态

    说http无状态,客户端请求,建立一个链接,请求完毕既会关掉连接,避免占用通道,对处理业务逻辑没有记忆功能

  4. 第30章 部署 - Identity Server 4 中文文档(v1.0.0)

    您的身份服务器只是一个标准的ASP.NET Core应用程序,包括IdentityServer中间件.首先阅读有关发布和部署的官方Microsoft 文档(尤其是有关负载平衡器和代理的部分). 30. ...

  5. IIS配置HTTPS

    1,新建网站,选中类型为 https,然后更改SSL证书为你配置的SSL证书, 对于SSL证书的配置是这样的 点开第二步,然后点击 创建自签名证书 确定以后点开网站看到有个SSL, 双击进去,再选中 ...

  6. Asp.net的DataGrid实现列冻结(C#)

    # Asp.net的DataGrid实现列冻结(C#) 一.写在前面 列冻结即在拖动横向滚动条时,冻结的列会随着滚动条移动,使得该列不会因为拖动滚动条而被隐藏,呈现出仿佛冻结的效果.列冻结与表头冻结是 ...

  7. arcgis api 3.x for js 入门开发系列八聚合效果(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  8. OPC协议解析-OPC客户端与服务器通讯解析

    1      OPC服务器 OPC服务器, 是指按照OPC基金组织规定的OPC规范群开发的软件驱动.OPC服务器作为中间媒介负责从数据源读取数据再跟另外一端的客户端通信.在 OPC客户端/服务器 的结 ...

  9. Easyui datagrid 修改分页组件的分页提示信息为中文

    datagrid 修改分页组件的分页提示信息为中文 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 问题描述 默认分页组件为英文展示,如下,希望改成中文展示 ...

  10. 如何为 .NET Core CLI 启用 TAB 自动补全功能

    如何为 .NET Core CLI 启用 TAB 自动补全功能 Intro 在 Linux 下经常可以发现有些目录/文件名,以及有些工具可以命令输入几个字母之后按 TAB 自动补全,最近发现其实 do ...