1. #import "ViewController.h"
  2. typedef enum
  3. {
  4. ButtonTypeLeft = 1,
  5. ButtonTypeRight,
  6. ButtonTypeUp,
  7. ButtonTypeDown,
  8. ButtonTypeRotleL,
  9. ButtonTypeRotleR,
  10. ButtonTypeScaleUp,
  11. ButtonTypeScaleDown
  12. }ButtonType;
  13. @interface ViewController ()
  14. @property (strong, nonatomic) IBOutlet UIView *viewMan;
  15. @end
  1. @implementation ViewController
  2. - (IBAction)buttonDirectionClicked:(UIButton *)sender
  3. {
  4. //获取屏幕的宽度、高度
  5. NSInteger screenWidth = self.view.frame.size.width;
  6. NSInteger screenHeight = self.view.frame.size.height;
  7. //获取viewMain的位置信息
  8. CGRect rect = self.viewMan.frame;
  9. //设置移动的尺寸
  10. NSInteger offSet = 10;
  11. switch (sender.tag) {
  12. case ButtonTypeLeft:
  13. rect.origin.x -= offSet;
  14. if (rect.origin.x <= -rect.size.width ) {
  15. rect.origin.x = screenWidth;
  16. }
  17. break;
  18. case ButtonTypeRight:
  19. rect.origin.x += offSet;
  20. if (rect.origin.x >= screenWidth) {
  21. rect.origin.x = -rect.size.width;
  22. }
  23. break;
  24. case ButtonTypeUp:
  25. rect.origin.y -= offSet;
  26. if (rect.origin.y <= -rect.size.height) {
  27. rect.origin.y = screenHeight;
  28. }
  29. break;
  30. case ButtonTypeDown:
  31. rect.origin.y += offSet;
  32. if (rect.origin.y >= screenHeight) {
  33. rect.origin.y = -rect.size.height;
  34. }
  35. break;
  36. }
  37. self.viewMan.frame = rect;
  38. }
  39. - (IBAction)buttonRotale:(UIButton *)sender
  40. {
  41. CGAffineTransform form = self.viewMan.transform;
  42. switch (sender.tag) {
  43. case ButtonTypeRotleL:
  44. form = CGAffineTransformRotate(form, -M_2_PI/2);
  45. break;
  46. case ButtonTypeRotleR:
  47. form = CGAffineTransformRotate(form, M_2_PI/2);
  48. default:
  49. break;
  50. }
  51. self.viewMan.transform = form;
  52. }
  53. - (IBAction)buttonScale:(UIButton *)sender
  54. {
  55. CGAffineTransform form = self.viewMan.transform;
  56. CGFloat scaleFator = 0.0f;
  57. switch (sender.tag) {
  58. case ButtonTypeScaleUp:
  59. scaleFator = 1.5;
  60. break;
  61. case ButtonTypeScaleDown:
  62. scaleFator = 0.5;
  63. }
  64. form = CGAffineTransformScale(form, scaleFator, scaleFator);
  65. self.viewMan.transform = form;
  66. }
  67. - (void)viewDidLoad {
  68. [super viewDidLoad];
  69. // Do any additional setup after loading the view, typically from a nib.
  70. }
  71. - (void)didReceiveMemoryWarning {
  72. [super didReceiveMemoryWarning];
  73. // Dispose of any resources that can be recreated.
  74. }
  75. @end

UI基础_transform的更多相关文章

  1. 转发-UI基础教程 – 原生App切图的那些事儿

    UI基础教程 – 原生App切图的那些事儿 转发:http://www.shejidaren.com/app-ui-cut-and-slice.html 移动APP切图是UI设计必须学会的一项技能,切 ...

  2. Android UI基础之五大布局

    Android  UI基础之五大布局 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Andro ...

  3. iOS开发UI基础—手写控件,frame,center和bounds属性

    iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...

  4. Android UI基础教程 目录

    从csdn下载了这本英文版的书之后,又去京东搞了一个中文目录下来.对照着看. 话说,这本书绝对超值.有money的童鞋看完英文版记得去买中文版的~~ Android UI基础教程完整英文版 pdf+源 ...

  5. UI基础UIButton

    UI基础UIButton 前面写了UIWindow.UIViewController,那些都是一些框架,框架需要填充上具体的view才能组成我们的应用,移动应用开发中UI占了很大一部分,最基础的UI实 ...

  6. UI基础UIWindow、UIView

    UI基础UIWindow.UIView 在PC中,应用程序多是使用视窗的形式显示内容,手机应用也不例外,手机应用中要在屏幕上显示内容首先要创建一个窗口承载内容,iOS应用中使用UIWindow.UIV ...

  7. IOS开发UI基础--数据刷新

    IOS开发UI基础--数据刷新 cell的数据刷新包括下面几个方面 加入数据 删除数据 更改数据 全局刷新方法(最经常使用) [self.tableView reloadData]; // 屏幕上的全 ...

  8. Android 的UI基础布局的学习

    一. 今天学习了Android 的UI基础布局的部分,绝大多数的布局都在Androidstudio的这个界面里,如下: 在左边的框里的palette的内部,包含了的大多数的布局所要用的button按钮 ...

  9. IOS开发UI基础UIView

    主要介绍下UIView得基本概念和一些属性的介绍至于属性的用户后面会由详细的介绍 -.UIView基本概念 1.什么是控件? 屏幕上所有的UI元素都叫做控件 (也有很多书中叫做视图 组件) 比如 按钮 ...

随机推荐

  1. Python urllib的urlretrieve()函数解析 (显示下载进度)

    #!/usr/bin/python #encoding:utf-8 import urllib import os def Schedule(a,b,c): ''''' a:已经下载的数据块 b:数据 ...

  2. 探讨把一个元素从它所在的div 拖动到另一个div内的实现方法

    故事背景: 接到一个新需求,要求用vue搞,主要是拖动实现布局,关键点有:单个组件拖动,一行多列里面的组件拖动,  单个组件可以拖入一行多列里, 单个组件的拖动好实现,关键是把一个组件拖动到另一个类似 ...

  3. 操作XML-dom4j

    首先是到dom4j的官网dom4j文件包,下载之后解压如下所示. 在根目录中,找到dom4j-1.6.1jar包,加入到eclipse中的lib文件下,最后build path一下,即可使用相关的方法 ...

  4. MongoDB save()方法和insert()方法的区别

    MongoDB save()方法和insert()方法的区别 首先看官方文档怎么说的 Updates an existing document or inserts a new document, d ...

  5. Linux下用户管理、目录结构

    linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录. 目录介绍: / root,存放root用户的相关文件 home,存放普通用户的相关文 ...

  6. jmeter对响应结果做正则、json、xpath结果测试

    上面的返回结果可用于关联取值测试 具体用法详见http://www.cnblogs.com/xinjing-jingxin/p/8554338.html http://goessner.net/art ...

  7. poj1840

    Eqs Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 15133   Accepted: 7426 Description ...

  8. 【BZOJ1941】[Sdoi2010]Hide and Seek KDtree

    [BZOJ1941][Sdoi2010]Hide and Seek Description 小猪iPig在PKU刚上完了无聊的猪性代数课,天资聪慧的iPig被这门对他来说无比简单的课弄得非常寂寞,为了 ...

  9. 《从零开始学Swift》学习笔记(Day 38)——构造函数与存储属性初始化

    原创文章,欢迎转载.转载请注明:关东升的博客 构造函数的主要作用是初始化实例,其中包括:初始化存储属性和其它的初始化.在Rectangle类或结构体中,如果在构造函数中初始化存储属性width和hei ...

  10. 母版页改变被嵌套的页面中的控件ID的解决方法

    使用过模板页的朋友都会很纳闷,怎么页面的用js通过getElementById(“id”):找不到对象.查看了页面源代码才发现,原来控件的ID变了,这是母版页导致的.因为母版页怕母版页本身页面中的控件 ...