UI基础_transform
- #import "ViewController.h"
- typedef enum
- {
- ButtonTypeLeft = 1,
- ButtonTypeRight,
- ButtonTypeUp,
- ButtonTypeDown,
- ButtonTypeRotleL,
- ButtonTypeRotleR,
- ButtonTypeScaleUp,
- ButtonTypeScaleDown
- }ButtonType;
- @interface ViewController ()
- @property (strong, nonatomic) IBOutlet UIView *viewMan;
- @end
- @implementation ViewController
- - (IBAction)buttonDirectionClicked:(UIButton *)sender
- {
- //获取屏幕的宽度、高度
- NSInteger screenWidth = self.view.frame.size.width;
- NSInteger screenHeight = self.view.frame.size.height;
- //获取viewMain的位置信息
- CGRect rect = self.viewMan.frame;
- //设置移动的尺寸
- NSInteger offSet = 10;
- switch (sender.tag) {
- case ButtonTypeLeft:
- rect.origin.x -= offSet;
- if (rect.origin.x <= -rect.size.width ) {
- rect.origin.x = screenWidth;
- }
- break;
- case ButtonTypeRight:
- rect.origin.x += offSet;
- if (rect.origin.x >= screenWidth) {
- rect.origin.x = -rect.size.width;
- }
- break;
- case ButtonTypeUp:
- rect.origin.y -= offSet;
- if (rect.origin.y <= -rect.size.height) {
- rect.origin.y = screenHeight;
- }
- break;
- case ButtonTypeDown:
- rect.origin.y += offSet;
- if (rect.origin.y >= screenHeight) {
- rect.origin.y = -rect.size.height;
- }
- break;
- }
- self.viewMan.frame = rect;
- }
- - (IBAction)buttonRotale:(UIButton *)sender
- {
- CGAffineTransform form = self.viewMan.transform;
- switch (sender.tag) {
- case ButtonTypeRotleL:
- form = CGAffineTransformRotate(form, -M_2_PI/2);
- break;
- case ButtonTypeRotleR:
- form = CGAffineTransformRotate(form, M_2_PI/2);
- default:
- break;
- }
- self.viewMan.transform = form;
- }
- - (IBAction)buttonScale:(UIButton *)sender
- {
- CGAffineTransform form = self.viewMan.transform;
- CGFloat scaleFator = 0.0f;
- switch (sender.tag) {
- case ButtonTypeScaleUp:
- scaleFator = 1.5;
- break;
- case ButtonTypeScaleDown:
- scaleFator = 0.5;
- }
- form = CGAffineTransformScale(form, scaleFator, scaleFator);
- self.viewMan.transform = form;
- }
- - (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.
- }
- @end
UI基础_transform的更多相关文章
- 转发-UI基础教程 – 原生App切图的那些事儿
UI基础教程 – 原生App切图的那些事儿 转发:http://www.shejidaren.com/app-ui-cut-and-slice.html 移动APP切图是UI设计必须学会的一项技能,切 ...
- Android UI基础之五大布局
Android UI基础之五大布局 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Andro ...
- iOS开发UI基础—手写控件,frame,center和bounds属性
iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...
- Android UI基础教程 目录
从csdn下载了这本英文版的书之后,又去京东搞了一个中文目录下来.对照着看. 话说,这本书绝对超值.有money的童鞋看完英文版记得去买中文版的~~ Android UI基础教程完整英文版 pdf+源 ...
- UI基础UIButton
UI基础UIButton 前面写了UIWindow.UIViewController,那些都是一些框架,框架需要填充上具体的view才能组成我们的应用,移动应用开发中UI占了很大一部分,最基础的UI实 ...
- UI基础UIWindow、UIView
UI基础UIWindow.UIView 在PC中,应用程序多是使用视窗的形式显示内容,手机应用也不例外,手机应用中要在屏幕上显示内容首先要创建一个窗口承载内容,iOS应用中使用UIWindow.UIV ...
- IOS开发UI基础--数据刷新
IOS开发UI基础--数据刷新 cell的数据刷新包括下面几个方面 加入数据 删除数据 更改数据 全局刷新方法(最经常使用) [self.tableView reloadData]; // 屏幕上的全 ...
- Android 的UI基础布局的学习
一. 今天学习了Android 的UI基础布局的部分,绝大多数的布局都在Androidstudio的这个界面里,如下: 在左边的框里的palette的内部,包含了的大多数的布局所要用的button按钮 ...
- IOS开发UI基础UIView
主要介绍下UIView得基本概念和一些属性的介绍至于属性的用户后面会由详细的介绍 -.UIView基本概念 1.什么是控件? 屏幕上所有的UI元素都叫做控件 (也有很多书中叫做视图 组件) 比如 按钮 ...
随机推荐
- VS2005 Manifest 配置问题总结
一.问题 编译某个遗留工程后,运行程序时报错,“由于应用程序的配置不正确,应用程序无法启动.重新安装应用程序可能会解决这个问题.” 查看生成的Manifest文件如下: <?xml versio ...
- .Net 单例模式(Singleton)
每台计算机可以有若干个打印机,但只能有一个Printer Spooler, 以避免两个打印作业同时输出到打印机中.每台计算机可以有若干传真卡,但是只应该有一个软件负责管理传真卡,以避免出现两份传真作业 ...
- ChemDraw能够生成化学性质报告吗
ChemDraw破解版是一种不安全的软件版本,危害用户信息安全,一些不法分子正是因利用用户寻求免费软件的心理以ChemDraw破解版.ChemDraw注册机为噱头传播不安全信息.如果使用者已经成功安装 ...
- sz与rz
yum安装root 账号登陆后执行以下命令:yum install -y lrzsz使用说明sz命令发送文件到本地:# sz filenamerz命令本地上传文件到服务器:# rz https://w ...
- linux下shell程序(一)
shell结构 1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建shell程序的步骤 第一步:创建一个包含命令和控制结构的文件. 第二步:修改这个文件的权限使它可以执行.使用c ...
- VS2008试用版到期解决办法----win7下VS2008升级补丁.zip
打开好久没用的Visual studio 2008,才知道试用版已经到期了.在网上找来了序列号,可是连一个输入序列号的地方都没有,困惑了好久,终于找到了解决办法. 首先献上自己收集的Visual st ...
- boost::lockfree::queue
#include <boost/thread/thread.hpp> #include <boost/lockfree/queue.hpp> #include <iost ...
- Kotlin——初级篇(四):控制语句详解
在前面 的章节中讲解了Kotlin语言中的数据类型.变量与常量的定义.不了解请参见前面的内容: Kotlin--初级篇(三):数据类型详解. Kotlin--初级篇(二)常量.变量.注释. 下面详细为 ...
- HDU1688(Sightseeing)
题目链接:传送门 题目大意:给你一幅图(单向边),找出从起点到终点有多少条不同路径(最短路或者比最短路长度大1) 题目思路:二维dijkstra,真的是要对dijkstra理解非常透彻才行,距离数组d ...
- 3 Steps(二分图)
C - 3 Steps Time limit : 2sec / Memory limit : 256MB Score : 500 points Problem Statement Rng has a ...