iOS 开发-UIButton(按钮)的使用

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);

                    [self addSubview:badgeLable];

                }

            @end

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

你可能感兴趣的:(iOS 开发-UIButton(按钮)的使用)