zoukankan      html  css  js  c++  java
  • 选中按钮改变文字大小和颜色

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

  • 相关阅读:
    常用排序算法及java语言实现
    机器学习实战笔记(python3实现)01--概述
    笔试错题--(字符串常量池和JVM运行时数据区)
    笔试错题(典型题)
    java进阶--java网络编程
    01_Java基础_第1天(Java概述、环境变量、注释、关键字、标识符、常量)
    数据库3(DBUtils)
    数据库2(JDBC、DBUtils)
    数据库1(数据库、表及表数据、SQL语句)
    Linux的基本命令
  • 原文地址:https://www.cnblogs.com/ljj-Andrew-519/p/7248781.html
Copyright © 2011-2022 走看看