ios开发 自定义btn_iOS 开发-UIButton(按钮)的使用

本文详细介绍了UIButton的创建、位置大小设置、文字与图片内容的添加、样式调整以及各种状态下的显示效果。同时,还讨论了如何自定义按钮样式,包括图片与文字的位置布局以及设置角标的方法,是iOS开发中关于UIButton全面的实践指南。
摘要由CSDN通过智能技术生成

UIButton的基本使用

1. 创建button

UIButton *btn = [UIButton buttonWithType:(UIButtonType)UIButtonTypeCustom];

UIButtonType    枚举类型

UIButtonTypeCustom = 0    自定义风格

UIButtonTypeRoundedRect    圆角矩形

UIButtonTypeDetailDisclosure    蓝色小箭头按钮, 主要做详细说明使用

UIButtonTypeInfoLight    亮色感叹号

UIButtonTypeInfoDark    暗色感叹号

UIButtonTypeContactAdd    十字加号按钮

2. frame    设置按钮的位置大小

btn.frame = CGRectMake(0,104,SCREEN_Width,40); (SCREEN_Width 屏幕宽度)

3. title 按钮样式内容

[btn setTitle:@"本是恶魔世界里的小丑, 奈何生长在了耀眼的和平世界" forState: UIControlStateNormal]; 设置按钮文本内容

[btn setTitleColor:[UIColor blackColor] forState:(UIControlState)UIControlStateNormal]; 设置按钮文本字体颜色

[btn setImage:[UIImage imageNamed:@"weChat"] forState:(UIControlStateNormal)]; 给按钮设置图片,

在同时设置按钮的图片和文字内容时会左边显示图片, 右边显示文字, 如下图

同时设置文字和图片

btn.backgroundColor = [UIColor yellowColor];    给按钮设置背景颜色

[btn setBackgroundImage:[UIImage imageNamed:@"share"] forState:(UIControlStateNormal)]; 按钮设置背景图片

btn.layer.masksToBounds = YES;

btn.layer.cornerRadius = 10;

btn.layer.borderColor = [UIColor blueColor].CGColor;

btn.layer.borderWidth = 1;    以上四行代码就是设置按钮的圆角和边框(UIlabel等控件同)

UIControlState 按钮枚举类型

UIControlStateNormal = 0    常规状态显示 (使用次数居多)

UIControlStateHighlighted    高亮状态显示

UIControlStateDisabled    禁用的状态才能显示

UIControlStateSelected    选中时显示的状态

UIControlStateFocused    当获得焦点状态时才会显示

UIControlStateApplication    当应用程序标志时显示

UIControlStateReserved    为内部框架预留, 开发时不用管

4. adjustsImageWhenHighlighted 默认情况下,当按钮高亮的情况下,图像的颜色会被画深一点

btn.adjustsImageWhenHighlighted = NO;   如果这下面的这个属性设置为no, 那么可以去掉这个功能

5. adjustsImageWhenDisabled 如果4的按钮设置为NO时 设置这个属性为NO时会取消4的设置

btn.adjustsImageWhenDisabled = NO;

6. showsTouchWhenHighlighted 当这个属性为YES时按下按钮会发光

btn.showsTouchWhenHighlighted = YES; 亲测有效

7. 给按钮添加点击事件addTarget

[btn addTarget:self action:@selector(selectorBtn) forControlEvents:(UIControlEventAllTouchEvents)];

UIControlEvents 点击事件枚举类型

UIControlEventTouchDown

单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候。

UIControlEventTouchDownRepeat

多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候。

UIControlEventTouchDragInside

当一次触摸在控件窗口内拖动时。

UIControlEventTouchDragOutside

当一次触摸在控件窗口之外拖动时。

UIControlEventTouchDragEnter

当一次触摸从控件窗口之外拖动到内部时。

UIControlEventTouchDragExit

当一次触摸从控件窗口内部拖动到外部时。

UIControlEventTouchUpInside (常用)

所有在控件之内触摸抬起事件。

UIControlEventTouchUpOutside

所有在控件之外触摸抬起事件(点触必须开始与控件内部才会发送通知)。

UIControlEventTouchCancel

所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断。

UIControlEventTouchChanged

当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。你可以配置滑块控件何时发送通知,在滑块被放下时发送,或者在被拖动时发送。

UIControlEventEditingDidBegin

当文本控件中开始编辑时发送通知。

UIControlEventEditingChanged

当文本控件中的文本被改变时发送通知。

UIControlEventEditingDidEnd

当文本控件中编辑结束时发送通知。

UIControlEventEditingDidOnExit

当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。

UIControlEventAlltouchEvents

通知所有触摸事件。

UIControlEventAllEditingEvents

通知所有关于文本编辑的事件。

UIControlEventAllEvents

通知所有事件。

8. 按钮样式图片+文字

样式需要重写button方法, 可以网上搜索一下, 很多文章本文小编给放一个在上面

.h文件里面

@interfaceUIButton(Extensions)

- (void)setUpImageAndDownLableWithSpace:(CGFloat)space;    上部分是图片,下部分是文字

- (void)setLeftTitleAndRightImageWithSpace:(CGFloat)space;    左边是文字,右边是图片

- (void)setBadgeValue:(NSInteger)badgeValue;    设置角标的个数(右上角)

@end

.m文件里面

@implementation UIButton (Extensions)

上部分是图片,下部分是文字

- (void)setUpImageAndDownLableWithSpace:(CGFloat)space{

CGSizeimageSize =self.imageView.frame.size;

CGSizetitleSize =self.titleLabel.frame.size;

// titleLabel的宽度不一定正确的时候,需要进行判断

CGFloat labelWidth = self.titleLabel.intrinsicContentSize.width;

if(titleSize.width< labelWidth) {

titleSize.width= labelWidth;

}

// 文字距上边框的距离增加imageView的高度+间距,距离左边框减少imageView的宽度,距离下边框和右        边框距离不变

[selfsetTitleEdgeInsets:UIEdgeInsetsMake(imageSize.height+space, -15, -space,0)];

// 图片距右边框的距离减少图片的宽度,距离上面的间隔,其它不变

[selfsetImageEdgeInsets:UIEdgeInsetsMake(-space*2, -space*0.5,0.0,-titleSize.width)];

}

左边是文字,右边是图片(和原来的样式翻过来)

- (void)setLeftTitleAndRightImageWithSpace:(CGFloat)space{

CGSizeimageSize =self.imageView.frame.size;

CGSizetitleSize =self.titleLabel.frame.size;

// titleLabel的宽度不一定正确的时候,需要进行判断

CGFloat labelWidth = self.titleLabel.intrinsicContentSize.width;

if(titleSize.width< labelWidth) {

titleSize.width= labelWidth;

}

// 文字距左边框的距离减少imageView的宽度-间距,右侧增加距离imageView的宽度

[selfsetTitleEdgeInsets:UIEdgeInsetsMake(0.0, -imageSize.width- space,0.0, imageSize.width)];

// 图片距左边框的距离增加titleLable的宽度,距右边框的距离减少titleLable的宽度

[selfsetImageEdgeInsets:UIEdgeInsetsMake(0.0, titleSize.width,0.0,-titleSize.width)];

}

设置角标的个数(右上角

- (void)setBadgeValue:(NSInteger)badgeValue{

CGFloatbadgeW  = 20;

CGSizeimageSize = self.imageView.frame.size;

CGFloatimageX  = self.imageView.frame.origin.x;

CGFloatimageY  = self.imageView.frame.origin.y;

UILabel*badgeLable = [[UILabelalloc]init];

badgeLable.text = [NSStringstringWithFormat:@"%ld",badgeValue];

badgeLable.textAlignment = NSTextAlignmentCenter;

badgeLable.textColor= [UIColorwhiteColor];

badgeLable.font = [UIFontsystemFontOfSize:12];

badgeLable.layer.cornerRadius = badgeW*0.5;

badgeLable.clipsToBounds = YES;

badgeLable.backgroundColor = [UIColorredColor];

CGFloatbadgeX = imageX + imageSize.width- badgeW*0.5;

CGFloatbadgeY = imageY - badgeW*0.25;

badgeLable.frame = CGRectMake(badgeX, badgeY, badgeW, badgeW);

[selfaddSubview:badgeLable];

}

@end

此上就是UIButton在使用中的常用属性以及使用方法, 如有不足或者错误, 欢迎大家前来纠正, 谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值