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在使用中的常用属性以及使用方法, 如有不足或者错误, 欢迎大家前来纠正, 谢谢

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容