不多说,先上图片看效果,猫猫分享。必须精品

原创文章。欢迎转载。转载请注明:翟乃玉的博客

地址:

viewmode=contents">http://blog.csdn.net/u013357243?viewmode=contents

这个小程序主要实现点击方向键能够让图标上下左右动还有放大缩小以及旋转的功能。点击图片会显示还有一张图片。

点击变换

事实上用到了按钮的两个状态。再State Config中的Default还有Highlighted的两个状态下background内容图片的设置

事实上就是按钮的几个状态:

Default:默认状态

Highlighted:被点击时候的高亮状态

Selected:被选中的时候的状态

Disabled:不能使用的时候的状态

移动

- (IBAction)move:(UIButton *)button {
//获得frame
CGRect frame = self.iconButton.frame;
//依据按钮的类型来改动frame属性
switch (button.tag) {
case kMovingDirTop:/**向上移动*/
frame.origin.y -=20;
break;
case kMovingDirBottom:/**向下移动*/
frame.origin.y +=20;
break;
case kMovingDirLeft:/**向左移动*/
frame.origin.x -=20;
break;
case kMovingDirRight:/**向右移动*/
frame.origin.x +=20;
break;
}

这是实现的主要方法,实现方法事实上非常多,这方法也不是最好的,能够參考。

这里须要注意的是:frame

对于类UIView(UIButton等等都是继承自他,能够看成在手机上显示的全部东西都是这个)有属性在屏幕上的位置等等最重要的属性是位置和大小。

我们能够通过按住command + 鼠标左键(ctrl+command+j)进入看源代码

通过看源代码,我们发现他定义了三个:

@property(nonatomic) CGRect            frame;
@property(nonatomic) CGRect bounds;
@property(nonatomic) CGPoint center;

这里有:

frame:主要管位置和大小(初始化的时候用,其它时候改变要用下以下两个)

bounds:他的圆点是0。主要管大小

center:主要是点,决定位置

他们的类型是

(结构体struct)CGRect

struct CGRect {
CGPoint origin;
CGSize size;
};

而他又包含point和size 当然这两个也是结构体,看名字就知道他们是干嘛的了比如origin是:

struct CGPoint {/*决定在屏幕上xy坐标*/

CGFloat x;

CGFloat y;

};


而你要是再看看。事实上CGFloat就是double

# define CGFLOAT_TYPE double

放大缩小功能

//放大缩小
- (IBAction)zoom:(UIButton *)button{
//取出bounds
CGRect bounds = self.iconButton.bounds;
if(button.tag){
NSLog(@"放大");
bounds.size.width +=20;
bounds.size.height +=20;
}else{
bounds.size.width -=20;
bounds.size.height -=20;
NSLog(@"缩小");
}
//加动画
//动画開始
[UIView beginAnimations:nil context:nil];
//设置持续时间
[UIView setAnimationDuration:1.0];
//放大缩小了的bounds放回到原来button中
self.iconButton.bounds = bounds;
//提交动画
[UIView commitAnimations];
}

在这里我并没实用frame来改动,而是用了bounds的属性,事实上本质上还是底层的CGSize而已

在这里为了学习,我又加入了一段动画代码IOS的动画非常人性化。比安卓强了不止一点半点。要注意,学习起来一定要点进去看看。不会的就试试,重要的东西通常会放在代码的靠上的部位。

旋转功能

//旋转
- (IBAction)rotate:(UIButton *)button{
//旋转主要用到角度,OC中用的是弧度
CGFloat angle = (button.tag) ? M_PI_4 : -M_PI_4;
self.iconButton.transform = CGAffineTransformRotate(self.iconButton.transform, angle);
NSLog(@"%@",NSStringFromCGAffineTransform(self.iconButton.transform));
}

好了。基本功能完毕了。剩下的大家能够自己尝试,完好。只是不要放慢学习的脚步哦。

PS1.须要学习资料的能够加我微信 znycat

PS2.为了学习,我一周会更新最少(%d),未知。

次。

猫猫学IOS(二)UI之button操作 点击变换 移动 放大缩小 旋转的更多相关文章

  1. AJ学IOS(02)UI之按钮操作 点击变换 移动 放大缩小 旋转

    不多说,先上图片看效果,AJ分享,必须精品 这个小程序主要实现点击方向键可以让图标上下左右动还有放大缩小以及旋转的功能,点击图片会显示另一张图片. 点击变换 其实用到了按钮的两个状态,再State C ...

  2. (素材源代码)猫猫学IOS(四)UI之半小时搞定Tom猫

    下载地址:http://download.csdn.net/detail/u013357243/8514915 以下是执行图片展示 制作思路以及代码解析 猫猫学IOS(四)UI之半小时搞定Tom猫这里 ...

  3. (素材源代码) 猫猫学IOS(五)UI之360等下载管理器九宫格UI

    猫猫分享,必须精品 先看效果 代码学习地址: 猫猫学IOS(五)UI之360等下载管理器九宫格UI 猫猫学IOS(五)UI之360等下载管理器九宫格UI http://blog.csdn.net/u0 ...

  4. iOS开发UI篇—Button基础

    iOS开发UI篇—Button基础 一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状 ...

  5. 猫猫学iOS 之微博项目实战(2)微博主框架-自己定义导航控制器NavigationController

    猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 一:加入导航控制器 上一篇博 ...

  6. 猫猫学iOS 之微博项目实战(5)微博自己定义搜索框searchBar

    猫猫分享.必须精品 原创文章.欢迎转载. 转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果 用UITextField简单定义一个搜索框 二:调用 ...

  7. 猫猫学iOS 之第一次打开Xcode_git配置,git简单学习

    猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:错误 当第一次打开Xcode我们进行commit操作的时候会 ...

  8. iOS开发UI篇——Button基础

    一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状态 1. normal(普通状态) ...

  9. (素材源代码) 猫猫学iOS 之UIDynamic重力、弹性碰撞吸附等现象牛逼Demo

    猫猫分享,必须精品 原创文章,欢迎转载. 转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果 二:代码 #import "ViewCon ...

随机推荐

  1. 如何在JS中应用正则表达式

    背景:在之前的随笔中写过C#中如何使用正则表达式,这篇随笔主要讲如何在js中应用正则表达式 如下代码: $("#zhengze").click(function () { var ...

  2. JQuery基本事件函数

    1,click单击事件 2,blur失去光标事件,focus获得光标事件 3,JQuery.on()函数:为html元素绑定事件,如下代码: $("div").on("c ...

  3. 3,bool值之间的转换,和str的各个功能属性。

    bool值之间的转换 and 空字符串即为False   字符串内有内容即为True. a = 11 c = str(a) #int转换成str print(type(c)) a = ' b = in ...

  4. luogu3159 [CQOI2012]交换棋子

    把每个点拆成 x y z 对于第 i 个点,x->y是表示流入的,y->z是表示流出的. #include <iostream> #include <cstring> ...

  5. NYOJ 311 完全背包

    完全背包 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 直接说题意,完全背包定义有N种物品和一个容量为V的背包,每种物品都有无限件可用.第i种物品的体积是c,价值是 ...

  6. 九度oj 题目1499:项目安排

    题目描述: 小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个项目后,拿到报酬都是不同的.由于小明马上就要硕士毕业了,面临着买房.买车.给 ...

  7. iOS学习笔记19-地图(一)定位CoreLocation

    一.定位介绍 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.要实现 ...

  8. nginx进程属主问题讨论

    文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/6107096.html 转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点,如 ...

  9. [BZOJ1595] [Usaco2008 Jan]人工湖(单调栈)

    传送门 好难的题..至少对我来说. 这题就是模拟从最低的平台注水,然后将最低的填满以后从最低的平台向两边扩展,每次找最近的最低的平台h,然后将水填到h高度. 栈里存的是向外扩展的时候,有时会遇到高度递 ...

  10. Classloader中loadClass()方法和Class.forName()区别

    Classloader中loadClass()方法和Class.forName()都能得到一个class对象,那这两者得到的class对象有什么区别呢 1.java类装载的过程 Java类装载有三个步 ...