为什么80%的码农都做不了架构师?>>>
UIButton 是经常使用的空间,可用通过视窗拖控件,但通常用代码创建。
一 UIButton 常用属性已经代码创建方式
// 创建一个自定义的按钮
UIButton *btn = [[UIButton alloc]init];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];//按钮的内容需要自定义,参考四UIButton 状态
// 设置按钮的位置和尺寸
CGFloat buttonW = 100;
CGFloat buttonH = buttonW;
CGFloat buttonX = (self.view.frame.size.width - buttonW) * 0.5;
CGFloat buttonY = (self.view.frame.size.height - buttonH) * 0.5;
btn.frame = CGRectMake(buttonX,buttonY ,buttonW , buttonH);
// 监听按钮点击(点击按钮后就会调用self的btnClick方法)
[btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
// 定义按钮标题字体格式
[button.titleLabel setFont:[UIFont boldSystemFontOfSize:20]];
// 设置按钮在 默认 状态下的属性
// 1.默认状态的背景
[btn setBackgroundImage:[UIImage imageNamed:@"imageName"] forState:UIControlStateNormal];
// 2.默认状态的文字
[btn setTitle:@"title" forState:UIControlStateNormal];
// 3.默认状态的文字颜色 UIColor 是个类,有多种颜色可选
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
// 设置按钮在 高亮 状态下的属性
// 1.高亮状态的背景
[btn setBackgroundImage:[UIImage imageNamed:@"imageName2"] forState:UIControlStateHighlighted];
// 2.高亮状态的文字
[btn setTitle:@"title2" forState:UIControlStateHighlighted];
// 3.高亮状态的文字颜色
[btn setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted];
// 添加按钮View
[self.view addSubview:btn];
二 UIButton 的状态
UIButton 状态 | 相关操作 | 状态枚举值 |
normal 普通状态 | 默认情况 | UIControlStateNormal |
highlighted 高亮状态 | 按钮被按下去的时候 | UIControlStateHighlighted |
disabled 不可用状态 | enabled属性为NO时,就是处于disable状态,代表按钮不可用 | UIControlStateDisabled |
三 transform属性
通过transform属性可以修改控件的位移、缩放、旋转
// 修改位置
// tx/ty 是移动距离,正值表示上移,负值表示下移
btn.transform = CGAffineTransformMakeTranslation(tx,ty);//通过CGAffineTransformMakeTranslation方法每次形变都基于原始值
btn.transform = CGAffineTransformTranslate(btn.transform,tx,ty);//基于btn上次的值,改变x和y值
// 缩放
// sx/sy 表示缩放比例 1表示正常,小于1表示缩小,大于1表示放大
btn.transform = CGAffineTransformMakeScale(sx,sy);
btn.transform = CGAffineTransformScale(this.transform,sx,sy);
// 旋转
// angle 是弧度值。正值为正时针,负值为负时针
btn.transform = CGAffineTransformMakeRotation(angle); //通过宏 M_PI,M_PI_4 来这设置
btn.transform = CGAffineTransformRotate(this.transform,angle);
// 旋转和移动
btn.transform = CGAffineTransformMakeTranslation(tx,ty);
btn.transform = CGAffineTransformRotate(this.transform,angle);
//重置位置
btn.transform = CGAffineTransformIdentity;
四 UIButton 按钮样式
UIButton自带了很多种不同的样式,创建的时候可用指定:
typedef NS_ENUM(NSInteger, UIButtonType) {
UIButtonTypeCustom = 0, // no button type
UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0), // standard system button
UIButtonTypeDetailDisclosure,
UIButtonTypeInfoLight,
UIButtonTypeInfoDark,
UIButtonTypeContactAdd,
UIButtonTypeRoundedRect = UIButtonTypeSystem, // Deprecated, use UIButtonTypeSystem instead
};
枚举值 | 对应样式 |
UIButtonTypeCustom | 无类型,按钮的内容需要自定义 |
UIButtonTypeDetailDisclosure | |
UIButtonTypeInfoLight | |
UIButtonTypeInfoDark | |
UIButtonTypeContactAdd |
五 代码部分
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad { [super viewDidLoad];
//1.创建按钮
UIButton *btn = [[UIButton alloc]init];
//2.添加到view上
[self.view addSubview:btn];
//3.设置位置
btn.frame=CGRectMake(100,100,100,100);
//4.设置图片
UIImage *img = [UIImage imageNamed:@"tx1.jpg"];
[btn setBackgroundImage:img forState:UIControlStateNormal];
/******* transform属性 ********/
//改变位置
[self translate:btn];
//重置位置
[self reset:btn];
//缩放
[self scale:btn];
//旋转
[self rotate:btn];
}
/**
* 改变位置
*
* @param btn <#btn description#>
*/
- (IBAction)translate:(UIButton *)btn
{
CGAffineTransform transform = btn.transform;
transform = CGAffineTransformTranslate(transform, -100, 0);
btn.transform = transform;
}
/**
* 重置位置
*
* @param btn <#btn description#>
*/
- (IBAction)reset:(UIButton *)btn {
btn.transform = CGAffineTransformIdentity;
}
/**
* 缩放
*
* @param btn <#btn description#>
*/
- (IBAction)scale:(UIButton *)btn {
CGAffineTransform transform = btn.transform;
// 放大
//transform = CGAffineTransformScale(transform, 1.2, 1.2);
// 缩小
transform = CGAffineTransformScale(transform, .5, .5);
// 重置值
btn.transform = transform;
}
/**
* 旋转
*
* @param btn
*/
- (IBAction)rotate:(UIButton *)btn {
CGAffineTransform transform = btn.transform;
// 左旋转
//transform = CGAffineTransformRotate(transform, -M_PI_4);
// 右旋转
transform = CGAffineTransformRotate(transform, M_PI_4);
// 重置值
btn.transform = transform;
}
@end