博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
选中按钮改变文字大小和颜色
阅读量:5140 次
发布时间:2019-06-13

本文共 2695 字,大约阅读时间需要 8 分钟。

这是一个比较实用的小功能,可以根据项目的需求而改变按钮的属性,这里我只是针对我的项目写出来的一个简单demo,需要想给在外部控制button的颜色和文字大小,可以给他封装一个方法或者添加两个属性即可。代码奉上:

 

这个功能的效果如下:

 

 

 

 

//

//  YMChangeButton.h

//

 

#import <UIKit/UIKit.h>

 

@interface YMChangeButton : UIButton

 

@end

 

//

//  YMChangeButton.m

//

 

#import "YMChangeButton.h"

 

#define LabelFontRegular(t) [UIFont fontWithName:@"PingFangHK-Regular" size:(t)]

 

@implementation YMChangeButton

 

//xib

- (void)awakeFromNib

{

    [super awakeFromNib];

}

 

//纯代码

- (instancetype)initWithFrame:(CGRect)frame

{

    if ([super initWithFrame:frame]) {

        

    }

    return self;

}

 

- (void)layoutSubviews

{

    [super layoutSubviews];

    

    NSRange range = [self.titleLabel.text rangeOfString:self.titleLabel.text];

    

    //设置普通状态下的文字属性

    NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:self.titleLabel.text];

    [attributedStr addAttribute:NSFontAttributeName value:LabelFontRegular(15) range:range];

    [attributedStr addAttribute:NSForegroundColorAttributeName value:[UIColor purpleColor] range:range];

    [self setAttributedTitle:attributedStr forState:UIControlStateNormal];

    

    //设置选中状态下的文字属性

    NSMutableAttributedString *attributedStrS = [[NSMutableAttributedString alloc] initWithString:self.titleLabel.text];

    [attributedStrS addAttribute:NSFontAttributeName value:LabelFontRegular(20) range:range];

    [attributedStrS addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:range];

    [self setAttributedTitle:attributedStrS forState:UIControlStateSelected];

    

}

 

@end

 

 

这个类的使用方法如下:

//

//  ViewController.m

//

 

#import "ViewController.h"

#import "UIView+MHExtension.h"

#import "YMChangeButton.h"

 

@interface ViewController ()

 

/** 当前选中的标题按钮 */

@property (nonatomic, weak) YMChangeButton *selectedTitleButton;

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    

    CGFloat buttonW = 200;

    CGFloat buttonH = 60;

    for (int i = 0; i < 5; i++) {

        YMChangeButton *button = [[YMChangeButton alloc] init];

        button.mh_x = 100;

        button.mh_y = i * (buttonH + 50) + 100;

        button.mh_width = buttonW;

        button.mh_height = buttonH;

        

        button.backgroundColor = [UIColor greenColor];

        [button setTitle:@"测试" forState:UIControlStateNormal];

        

        button.tag = i;

        

        [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];

        

        [self.view addSubview:button];

    }

    

    NSLog(@"%@",self.view.subviews);

    YMChangeButton *firstTileButton = self.view.subviews.lastObject;

    firstTileButton.selected = YES;

    self.selectedTitleButton = firstTileButton;

}

 

- (void)buttonClick:(YMChangeButton *)sender

{

    

    self.selectedTitleButton.selected = NO;

    sender.selected = YES;

    self.selectedTitleButton = sender;

    

    

    NSLog(@"111");

}

 

虽然这个功能写的不怎么样,但是对于新手来说也是不错的demo,欢迎各位大神指教。

转载于:https://www.cnblogs.com/ljj-Andrew-519/p/7248781.html

你可能感兴趣的文章
Attributes.Add用途与用法
查看>>
JavaScript面向对象初探——封装和继承
查看>>
L2-001 紧急救援 (dijkstra+dfs回溯路径)
查看>>
【概率】poj 2096:Collecting Bugs
查看>>
javascript 无限分类
查看>>
【自制插件】MMD4Maya
查看>>
解决linux服务器乱码
查看>>
mapbox.gl文字标注算法基本介绍
查看>>
【C++】异常简述(二):C++的异常处理机制
查看>>
web.config在哪里
查看>>
SQL Server 2000 版本支持的最大物理内存量
查看>>
spring IOC装配Bean(注解方式)
查看>>
[面试算法题]有序列表删除节点-leetcode学习之旅(4)
查看>>
SpringBoot系列五:SpringBoot错误处理(数据验证、处理错误页、全局异常)
查看>>
kubernetes_book
查看>>
Redis 常用数据结构命令
查看>>
软件工程课堂作业
查看>>
OpenFire 的安装和配置
查看>>
web.config详解
查看>>
ZJOI2018游记Round1
查看>>