IOS UIButton详解 & Button缩放旋转位移实例

为什么80%的码农都做不了架构师?>>>   hot3.png

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 003759_hbwb_1032974.png
UIButtonTypeInfoLight 003851_boij_1032974.png
UIButtonTypeInfoDark 003928_xZ5F_1032974.png
UIButtonTypeContactAdd 004023_Tbc2_1032974.png


五 代码部分

@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




转载于:https://my.oschina.net/wolx/blog/359398

你可能感兴趣的:(IOS UIButton详解 & Button缩放旋转位移实例)