首页 > 代码库 > 开发进阶04_按钮操作
开发进阶04_按钮操作
UIButton:有状态
1、normal:普通状态(没有触摸的时候)(默认情况下-Default)
2、highlighted:高亮状态(有触摸的时候)
经常会出的错误:
如果控件和方法或者属性连线了之后,若不需要这个属性和方法,需要将连线也删除
OC语法规定:不允许直接修改 某个对象中结构体属性的成员
修改按钮位置的步骤:
//设置宏
#define delt 50
- (IBAction)btnRun:(id)sender
{
//0、动画(头部-开始动画)
[UIView beginAnimations:nil context:nil];
//设置动画的执行时间(0.25秒是默认时间)
[UIView setAnimationDuration:1.0];
//1、先取出frame
CGRect tempFrame = self.btnImage.frame;
//2、取出按钮的tag值
NSInteger t = [sender tag];
switch (t) {
case 1:
tempFrame.origin.y -= delt;
break;
case 2:
tempFrame.origin.x += delt;
break;
case 3:
tempFrame.origin.y += delt;
break;
case 4:
tempFrame.origin.x -= delt;
break;
}
//3、重新赋值按钮的frame
self.btnImage.frame = tempFrame;
//4、动画(尾部-提交动画-执行动画)
[UIView commitAnimations];
}
OC中宏的定义:
在#import下面
#define 名称 值 (值后面千万不能加分号)
那么在下面的代码中,这个“名称”就代表“值”
相当于C#中的常量:const 数据类型 名称 = 值;
旋转度数的定义
PI:π
采用的是弧度
-M_PI_4:表示的是逆时针45°
M_PI_2:表示的是顺时针90°
控制按钮旋转
- (IBAction) Rotate:(id)sender {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
NSInteger t = [sender tag];
if(10 == t)
{
_btnImage.transform = CGAffineTransformRotate(_btnImage.transform
, -M_PI_4);
}else if(11 == t){
_btnImage.transform = CGAffineTransformRotate(_btnImage.transform
, +M_PI_4);
}
[UIView commitAnimations];
}
放大或缩小:
- (IBAction)bigOrSmall:(id)sender{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
NSInteger t = [sender tag];
if(t == 20)
{
_btnImage.transform = CGAffineTransformScale(_btnImage.transform, 1.2, 1.2);
}else if(t == 21){
_btnImage.transform = CGAffineTransformScale(_btnImage.transform, 0.8, 0.8);
}
[UIView commitAnimations];
}
上面的代码中都是首尾相同的:可以使用block语法
- (void)btnClickWithBlock:(void (^)())block
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
block();
[UIView commitAnimations];
}
方法中使用:
[self btnClickWithBlock:^{
NSInteger t = [sender tag];
if(t == 20)
{
_btnImage.transform = CGAffineTransformScale(_btnImage.transform, 1.2, 1.2);
}else if(t == 21){
_btnImage.transform = CGAffineTransformScale(_btnImage.transform, 0.8, 0.8);
}
}];
重置按钮状态:
CGAffineTransformIdentity:返回的是一个常量,清空按钮的形变
请求按钮的形变,恢复到原来的状态
- (IBAction)btnReset:(id)sender {
[self btnClickWithBlock:^{
_btnImage.transform = CGAffineTransformIdentity;
}];
}
移动控件的时候还可以通过center来移动,center是CGPoint类型
State Config:按钮状态
Background:背景图片
笔记:控件的属性
1、frame
-》表示控件的位置和尺寸(以父控件的左上角为坐标原点(0,0))
-》修改这个属性,可以调整控件的位置和尺寸
2、center
-》表示控件的中心点(以父控件的左上角为坐标原点)
-》修改这个属性,可以调整控件的位置
3、bounds
-》表示控件的位置和尺寸(以自己的左上角为坐标原点。位置永远都是(0,0))
-》修改这个属性,只能调整控件的尺寸
4、tag
-》表示控件的标识
-》通过不同标识可以区分不同的控件
5、transform
-》表示控件的形变状态(旋转角度、缩放比例)
-》创建CGAffineTransform 的函数
CGAffineTransformMakeScale(CGFloat sx,CGFloat sy);
创建一个x,y方向的缩放比例分别为sx,sy的形变值
CGAffineTransformMakeRotation(CGFloat angle)
创建一个旋转角度为angle的形变值
CGAffineTransformScale(CGAffineTransform t ,CGFloat sx,CGFloat sy);
在形变值t的基础上在进行缩放,x、y方向的缩放比例分别为sx、sy,然后返回一个新的形变值
开发进阶04_按钮操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。