码迷,mamicode.com
首页 > 其他好文 > 详细

选中按钮改变文字大小和颜色

时间:2017-07-28 11:00:53      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:nonatomic   tom   title   封装   ring   enc   geo   gre   text   

这是一个比较实用的小功能,可以根据项目的需求而改变按钮的属性,这里我只是针对我的项目写出来的一个简单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,欢迎各位大神指教。

选中按钮改变文字大小和颜色

标签:nonatomic   tom   title   封装   ring   enc   geo   gre   text   

原文地址:http://www.cnblogs.com/ljj-Andrew-519/p/7248781.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!