一、 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. Redux进阶(Immutable.js)

    更好的阅读体验 更好的阅度体验 Immutable.js Immutable的优势 1. 保证不可变(每次通过Immutable.js操作的对象都会返回一个新的对象) 2. 丰富的API 3. 性能好 ...

  2. C# 应用Excel条件格式(一)

    Excel中的条件格式功能是个十分强大且方便的功能,通过对使用条件格式功能可以在很大程度上改进表格的设计和可读性,用户可以指定单个或者多个单元格区域应用一种或者多种格式,如此一来,也在大大提高了表格的 ...

  3. Linux系统启动详解

    系统启动流程 通过下图认识下Linux系统的总体启动流程. BIOS BIOS一般负责检查硬件和查找启动设备. MBR:Boot Code MBR只是一段引导代码,真正的引导是由引导程序去执行的. G ...

  4. 表单提交前,判断webuploader是否上传

    function busUpLoadImg(postUrl,id) { .......//省略部分不用修改 uploader.on('uploadSuccess', function(file) { ...

  5. Vue UI:Vue开发者必不可少的工具

    译者按: Vue开发工具越来越好用了! 原文: Vue UI: A First Look 译者: Fundebug 本文采用意译,版权归原作者所有 随着最新的稳定版本Vue CLI 3即将发布,是时候 ...

  6. 22 , CSS 构造颜色、背景与图像

    1. 设定颜色 2. 背景使用 3. 图像使用 1.设定颜色 红色的几种合法定义; #f00; #ff0000; Red; Rgb(255,0,0); Rgb(100%,0%,0%); 2.十六进制三 ...

  7. PhpStorm 运行出现502 Bad Gateway

    打开PhpStorm,菜单栏File --> Settings... 一.点开Languages & Frameworks 选PHP PHP language level:选PHP版本, ...

  8. 2019-02-10 扩展Python控制台实现中文反馈信息

    "中文编程"知乎专栏原文地址 参考了周蟒的实现, 运行效果如下: $ python3 解释器.py Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 ...

  9. 自然语言处理NLP快速入门

    自然语言处理NLP快速入门 https://mp.weixin.qq.com/s/J-vndnycZgwVrSlDCefHZA [导读]自然语言处理已经成为人工智能领域一个重要的分支,它研究能实现人与 ...

  10. 【面向对象设计原则】之单一职责原则(SRP)

    单一职责原则是面向对象原则五大原则中最简单,也是最重要的一个原则, 他的字面定义如下: 单一职责原则(Single Responsibility Principle, SRP): 一个类只负责一个功能 ...