UIButton

2018年5月15日

  1. btn.titleLabel.font = [UIFont systemFontOfSize:22];

2017年9月27日
1.xib按钮 图片背景颜色显示错误修改


image.png

2017年9月19日
1.图片和文字布局修改

- (void)layoutButtonWithEdgeInsetsStyle:(MKButtonEdgeInsetsStyle)style
                        imageTitleSpace:(CGFloat)space {
    // 1. 得到imageView和titleLabel的宽、高
    //    CGFloat imageWith = self.imageView.frame.size.width;
    //    CGFloat imageHeight = self.imageView.frame.size.height;
    CGFloat imageWith = self.currentImage.size.width;
    CGFloat imageHeight = self.currentImage.size.height;
    
    CGFloat labelWidth = 0.0;
    CGFloat labelHeight = 0.0;
    if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
        // 由于iOS8中titleLabel的size为0,用下面的这种设置
        labelWidth = self.titleLabel.intrinsicContentSize.width;
        labelHeight = self.titleLabel.intrinsicContentSize.height;
    } else {
        labelWidth = self.titleLabel.frame.size.width;
        labelHeight = self.titleLabel.frame.size.height;
    }
    
    // 2. 声明全局的imageEdgeInsets和labelEdgeInsets
    UIEdgeInsets imageEdgeInsets = UIEdgeInsetsZero;
    UIEdgeInsets labelEdgeInsets = UIEdgeInsetsZero;
    
    // 3. 根据style和space得到imageEdgeInsets和labelEdgeInsets的值
    switch (style) {
        case MKButtonEdgeInsetsStyleTop: {
            imageEdgeInsets = UIEdgeInsetsMake(-labelHeight-space, 0, 0, -labelWidth);
            labelEdgeInsets = UIEdgeInsetsMake(0, -imageWith, -imageHeight-space, 0);
        }
            break;
//图片在左
        case MKButtonEdgeInsetsStyleLeft: {
            imageEdgeInsets = UIEdgeInsetsMake(0, -space, 0, space);
            labelEdgeInsets = UIEdgeInsetsMake(0, space, 0, -space);
        }
            break;
        case MKButtonEdgeInsetsStyleBottom: {
            imageEdgeInsets = UIEdgeInsetsMake(0, 0, -labelHeight-space, -labelWidth);
            labelEdgeInsets = UIEdgeInsetsMake(-imageHeight-space, -imageWith, 0, 0);
        }
            break;
        case MKButtonEdgeInsetsStyleRight: {
            imageEdgeInsets = UIEdgeInsetsMake(0, labelWidth+space, 0, -labelWidth-space);
            labelEdgeInsets = UIEdgeInsetsMake(0, -imageWith-space, 0, imageWith+space);
        }
            break;
        default:
            break;
    }
    // 4. 赋值
    self.titleEdgeInsets = labelEdgeInsets;
    self.imageEdgeInsets = imageEdgeInsets;
}

2017年7月22日
1.获取按钮title

NSString *title = self.resendButton.currentTitle;

2017年5月27日
一.按钮设置富文本显示
效果:

image.png

2.实现

//实现字体不同大小效果
            NSMutableAttributedString *attributedStr = [self getOneMoreBtnChangeText:num];
            [_oneMoreB setAttributedTitle:attributedStr forState:UIControlStateNormal];
- (NSMutableAttributedString *)getOneMoreBtnChangeText:(NSInteger)num
{
    NSString *part1 = _oneMoreB.titleLabel.text;
    NSString *part2 = [NSString stringWithFormat:@"(%ld次重考机会)",num];
    NSInteger len1 = part1.length;
    NSInteger len2 = part2.length;
    NSString *str = [NSString stringWithFormat:@"%@%@",part1,part2];
    NSMutableAttributedString *attributedStr = nil;
   
    NSInteger length = len1;
    NSInteger index = 0;
    attributedStr = [[NSMutableAttributedString alloc] initWithString:str];
    [attributedStr addAttribute:NSFontAttributeName
                          value:fontsize_T1
                          range:NSMakeRange(index, length)];
   
   
    index = index + length;
    length = len2;
    [attributedStr addAttribute:NSFontAttributeName
                          value:fontsize_T5
                          range:NSMakeRange(index, length)];
   
    return attributedStr;
}

二.不可点击按钮变灰色

image.png

实现

if (num > 0) {
        _oneMoreB.enabled = YES;
        _oneMoreB.alpha = 1.0;
    }else{
        _oneMoreB.enabled = NO;
        _oneMoreB.alpha = 0.4;
    }

2017年4月18日
一.创建圆形按钮(答题卡)实现
1.效果


Paste_Image.png

2.主要实现代码
2.1按钮控件

//题卡按钮类型
typedef NS_ENUM(NSInteger, HuExerciseCardBtnType){
    HuExerciseCardBtnTypeNoDone,//默认题卡样式没答题(答题)
    HuExerciseCardBtnTypeDone,//答过题(答题)
    HuExerciseCardBtnTypeWrong,//答错题
    HuExerciseCardBtnTypeRight,//答对题
};

+ (HuButton *)exerciseCardBtn:(HuExerciseCardBtnType)btnType
{
    HuButton *btn = [[HuButton alloc] init];
    //默认是错误的样式
    [btn setBackgroundColor:[UIColor clearColor]];
    [btn.layer setBorderWidth:list_borderLine_height];
    UIColor *color;
    if(btnType == HuExerciseCardBtnTypeRight)
    {
         color = [HuConfigration uiColorFromString:@"#0acd9f"];
    }
    else if(btnType == HuExerciseCardBtnTypeWrong)
    {
        color = [HuConfigration uiColorFromString:@"#ff6969"];
    }
    else if(btnType == HuExerciseCardBtnTypeNoDone)
    {
        //没有答过的样式
        [btn setBackgroundColor:eCard_undo_color];
        color = [HuConfigration uiColorFromString:@"#484848"];
        [btn.layer setBorderWidth:0];
    }
    else if (btnType == HuExerciseCardBtnTypeDone)
    {
        //答过题目样式
        [btn setBackgroundColor:eCard_do_color];
        color = fontcolor_C1;
        [btn.layer setBorderWidth:0];
    }

    btn.layer.borderColor = color.CGColor;
    [btn setTitleColor:color forState:UIControlStateNormal];

    return btn;
}

2.2创建各个样式答题卡

- (void)initContentView
{
    _scrollView = [[UIScrollView alloc]init];
    _scrollView.backgroundColor = fontcolor_C1;
    [self.view addSubview:_scrollView];

    //添加序号按钮
    UIButton *lastBtn = nil;
    NSInteger row = 0;
    CGRect frame;


    for(int i = 0; i < [_allExerciseShowIdArr count]; i++)
    {
        //设置答过题目按钮的样式
        NSString *curID = _allExerciseShowIdArr[i];
        HuExerciseCardBtnType btnType = HuExerciseCardBtnTypeNoDone;
        if ([_allUserAnswerExerciseShowIdArr containsObject:curID]) {
            btnType = HuExerciseCardBtnTypeDone;
        }

        if(_pageType == HuTestPracticePageTypeAnalyse)
        {
            if (i < _resExercises.count) {
                btnType = _resExercises[i].result ? HuExerciseCardBtnTypeRight : HuExerciseCardBtnTypeWrong;
            }
        }

        HuButton *btn = [HuButton exerciseCardBtn:btnType];

        [_scrollView addSubview:btn];

        CGFloat yPos;
        CGFloat xPos;
        if(lastBtn == nil){
            yPos = eCard_btn_vFlap;
            xPos = common_margin;
            if(row==0){row = 1;}
        }else if(lastBtn.right + eCard_btn_hFlap + eCard_btn_width > HHBWIDTH){
            yPos = lastBtn.bottom + eCard_btn_vFlap;
            xPos = common_margin;
            row++;
        }else{
            yPos = lastBtn.top;
            xPos = lastBtn.right + eCard_btn_hFlap;
        }
        frame = CGRectMake(xPos, yPos, eCard_btn_width, eCard_btn_height);
        btn.frame = frame;
        btn.layer.cornerRadius = eCard_btn_width/2.0;

        [btn setTitle:curID forState:UIControlStateNormal];


        btn.tag = tag_begin_index + i;
        [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];

        //设置当前位置的小红点
        if(i == _eId)
        {
            UILabel * redLabel = [[UILabel alloc] init];
            redLabel.backgroundColor = [UIColor redColor];
            CGFloat width = 7;
            redLabel.layer.cornerRadius = width/2;
            redLabel.layer.masksToBounds = YES;
            CGRect frame = CGRectMake(btn.centerX - width/2.0, btn.bottom, width, width);
            redLabel.frame = frame;
            [_scrollView addSubview:redLabel];
        }

        lastBtn = btn;
    }

    //设置_scrollView滚动相关属性
    if (row > 0) {
        CGFloat contentHeight = lastBtn.bottom + eCard_btn_vFlap;
        CGFloat viewHeight = eCard_contentView_height;
        //需要滚动
        if (contentHeight > viewHeight) {
            _scrollView.contentSize = CGSizeMake(HHBWIDTH, contentHeight);
            _scrollView.scrollEnabled = YES;
        }else{
            _scrollView.scrollEnabled = NO;
        }

        _scrollView.frame = CGRectMake(0, 0, HHBWIDTH, MIN(contentHeight,viewHeight));
    }
}

2017年4月17日
一.整行按钮 如何实现等间距显示
1.效果:


Paste_Image.png

2.实现:

    NSArray *title=[[NSArray alloc]initWithObjects:@"电子会刊",@"介绍",@"嘉宾",@"获奖名单",@"会务咨询" ,nil];


    CGFloat viewWidth = HHBWIDTH - 2*common_margin;

    CGFloat allBtnViewWidth = 0;
    UIFont *fontSize = fontsize_T2;
    NSMutableArray *btnViewWidthArr = @[].mutableCopy;
    for (NSInteger i = 0; i < title.count; i++) {
        CGSize size = [title[i] sizeWithAttributes: @{NSFontAttributeName:fontSize}];
        allBtnViewWidth += size.width;
        [btnViewWidthArr addObject:@(size.width)];
    }

    CGFloat flap = (viewWidth - allBtnViewWidth)/(title.count - 1);
    if (flap < 0) {
        flap = 0;
    }

    CGFloat xPos = common_margin;
    CGFloat yPos = 25;
    CGFloat width = 0;
    CGFloat height = 30;
    for (int i = 0; i < title.count; i ++) {
       //////////

        width = [btnViewWidthArr[i] floatValue];
        navigationBtn.frame = CGRectMake(xPos, yPos, width, height);
        xPos += width + flap;

        [_navigationView addSubview:navigationBtn];

    }

2017年3月14日
一.按钮点击区域太小解决,添加一个透明按钮
1.效果:

Paste_Image.png

2.实现(添加一个透明按钮)

    xPos = HHBWIDTH - common_margin - filterBtn_width;
    yPos = (practice_filterView_height - filterBtn_height)/2.0;
    frame = CGRectMake(xPos, yPos, filterBtn_width, filterBtn_height);
    _filterBtn = [[UIButton alloc] initWithFrame:frame];
    [_filterBtn setImage:IMG(@"filterBtn") forState:UIControlStateNormal];
    [_filterBtn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
    [bgView addSubview:_filterBtn];

    //添加一个透明按钮扩大点击区域
    width = 50;
    height = practice_filterView_height;
    xPos = HHBWIDTH - width;
    yPos = 0;
    frame = CGRectMake(xPos, yPos, width, height);
    UIButton *enlargeBtn = [[UIButton alloc] initWithFrame:frame];
    [enlargeBtn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
    [bgView addSubview:enlargeBtn];

    [self.view addSubview:bgView];

2017年1月11日
1.延迟点击

UIButton * button = [_tabBarBgView viewWithTag:1];
[self performSelector:@selector(btnClick:) withObject:button afterDelay:5];

如果您发现本文对你有所帮助,如果您认为其他人也可能受益,请把它分享出去。

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

推荐阅读更多精彩内容

  • 一、简介 <<UIButton(按钮) : 既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置,实现了监...
    无邪8阅读 5,628评论 0 2
  • 对象继承关系 UIButton 类本身定义继承 UIControl ,描述了在 iOS 上所有用户界面控件的常见基...
    独木舟的木阅读 3,718评论 0 3
  • 一个UIButton的实例变量, 使一个按钮(button)在触摸屏上生效。一个按钮监听触摸事件,当被点击时,给目...
    wushuputi阅读 1,479评论 0 1
  • UIButton的官方文档https://developer.apple.com/reference/uikit/...
    阿斯兰iOS阅读 898评论 0 0
  • 来吧,时光正在流逝周围的掌声已经响起, 趁年华未尽,在蓝色大幕下尽情表演! 让你我在高山之巅舞蹈,顺便和天风嘶吼…...
    a839668842f8阅读 188评论 2 7