UIButton详解

=======================基础功能=======================

// 使用此种初始化方法,title文字默认为白色,不推荐使用
UIButton * button = [[UIButton alloc] initWithFrame:CGRectMake(0, 100, 40, 30)];

/*
 初始化不同类型的UIButton(推荐)
 UIButtonTypeCustom -- 自定义,没有任何样式
 UIButtonTypeSystem -- 系统样式,默认颜色为蓝色
 UIButtonTypeDetailDisclosure -- 圈i
 UIButtonTypeInfoLight -- 圈i
 UIButtonTypeInfoDark -- 圈i
 UIButtonTypeContactAdd -- 圈+
 UIButtonTypeRoundedRect = UIButtonTypeSystem
*/

UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(0, 100, 320, 30);

/*
 设置在不同状态下的title,titleColor,image,backgroundImage
 UIControlStateNormal -- 普通状态
 UIControlStateHighlighted -- 高亮状态
 UIControlStateDisabled -- 禁用状态,需要button.enabled = NO;
 UIControlStateSelected -- 选中状态,需要button.selected = YES;
 UIControlStateApplication -- 应用程序标志状态
 UIControlStateReserved -- 预留状态
*/

// 设置文字
[button setTitle:@"OK" forState:UIControlStateNormal];
[button setTitle:@"KO" forState:UIControlStateHighlighted];

// 设置文字颜色
[button setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];

// 设置字体大小
button.titleLabel.font = [UIFont systemFontOfSize:17];

// 设置图片,此种情况图片在前文字在后,图片不会被拉伸显示
[button setImage:[UIImage imageNamed:@"beijing"] forState:UIControlStateNormal];

// 设置背景图片,此种情况图片在下文字在上,将图片拉伸显示以适应整个UIButton
[button setBackgroundImage:[UIImage imageNamed:@"beijing"] forState:UIControlStateNormal];

// 设置背景颜色
[button setBackgroundColor:[UIColor blackColor]];

// 是否允许点击UIButton时变暗,默认为YES
button.adjustsImageWhenHighlighted = NO;

/*
 设置不同事件下按钮方法的触发(同一个按钮不同触摸状态可以处理不同的事件,同一个按钮同一个触摸状态也可以处理不同的事件)
 UIControlEventTouchDown -- 按下
 UIControlEventTouchDownRepeat -- 重复按下
 UIControlEventTouchDragInside -- 在一定范围内拖动一直调用
 UIControlEventTouchDragOutside -- 在一定范围外拖动一直调用
 UIControlEventTouchDragEnter -- 在一定范围的外面进来时调用一次
 UIControlEventTouchDragExit -- 在一定范围的里面出去时调用一次
 UIControlEventTouchUpInside -- 点击后在范围内松手
 UIControlEventTouchUpOutside -- 点击后在范围外松手
 UIControlEventAllEvents -- 所有情况都调用
*/
[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];

- (void)buttonClicked:(UIButton *)sender
{
	NSLog(@"%s",__FUNCTION__);
}

=======================进阶功能======================


// 设置内容对齐方式,并设置内容距离四周距离(上左下右)
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
button.contentEdgeInsets = UIEdgeInsetsMake(0,10, 0, 0);

// 利用EdgeInsets属性将title和image放置在任意位置上,实现上图效果

/*
 UIButton自带了UIImageView和UILabel两个控件,可以显示image和title,通过imageEdgeInsets和titleEdgeInsets属性可以将image和title放置在任意位置上
 
 其实UIImageView和UILabel是相互联系的,在设置属性时需要将两者当做一个整体来考虑
 实时计算图片宽高 CGSize imageSize = button.imageView.frame.size;
 实时计算文字宽高 CGSize stringSize = [button.titleLabel.text sizeWithAttributes:@{NSFontAttributeName:button.titleLabel.font}];
*/

#define UI_SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width
#define UI_BUTTON_HEIGH 49

// 在默认情况下,图片在前文字在后显示,且中间没有间距(如button1)
[button1 setImageEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[button1 setTitleEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 0)];

// 让图片和文字之间间距为10(如button2)
[button2 setImageEdgeInsets:UIEdgeInsetsMake(0, (UI_SCREEN_WIDTH-imageSize.width-stringSize.width-10)/2, 0, (UI_SCREEN_WIDTH-imageSize.width-stringSize.width-10)/2+10)];
[button2 setTitleEdgeInsets:UIEdgeInsetsMake(0, (UI_SCREEN_WIDTH-imageSize.width-stringSize.width-10)/2+10, 0, (UI_SCREEN_WIDTH-imageSize.width-stringSize.width-10)/2)];

// 让图片距离右侧边缘10,让文字距离左侧边缘10(如button3)
[button3 setImageEdgeInsets:UIEdgeInsetsMake(0, UI_SCREEN_WIDTH-imageSize.width-10, 0, 10-stringSize.width)];
[button3 setTitleEdgeInsets:UIEdgeInsetsMake(0, 10-imageSize.width, 0, UI_SCREEN_WIDTH-stringSize.width-10)];

// 让图片距离上侧边缘10,让文字距离下侧边缘10(如button4)
[button4 setImageEdgeInsets:UIEdgeInsetsMake(10, 0, UI_BUTTON_HEIGH-10-imageSize.height, 0)];
[button4 setTitleEdgeInsets:UIEdgeInsetsMake(UI_BUTTON_HEIGH-10-stringSize.height, 0, 10, 0)];

// 让图片和文字都居中显示,且图片距离上侧边缘5,文字距离下侧边缘5(如button5)
[button5 setImageEdgeInsets:UIEdgeInsetsMake(5, (UI_SCREEN_WIDTH-imageSize.width)/2, UI_BUTTON_HEIGH-5-imageSize.height, (UI_SCREEN_WIDTH-imageSize.width)/2-stringSize.width)];
[button5 setTitleEdgeInsets:UIEdgeInsetsMake(UI_BUTTON_HEIGH-5-stringSize.height, (UI_SCREEN_WIDTH-stringSize.width)/2-imageSize.width, 5, (UI_SCREEN_WIDTH-stringSize.width)/2)];
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值