ios 消息按钮添加角标显示

来源:互联网 发布:花呗充值话费的淘宝店 编辑:程序博客网 时间:2024/06/06 04:37

   在做聊天时,其它界面的消息按钮展示,会遇到显示未读消息条数的情况.

   今天整理下,处理消息角标设置方法.

   直接上代码.

   创建一个类 BageButton继承UIButton类,并拓展这个按钮的属性.

   .h文件:

//设置角标数字font

#define SCBadgeNumberFontSize [UIFont systemFontOfSize:8]



@interface JKBadgeView :UIButton


/**

 *  badgeView上显示的数字

 */

@property (nonatomic,copy) NSString *badgeValue;


@end


   .m文件:

- (instancetype)initWithFrame:(CGRect)frame {

    

    self = [superinitWithFrame:frame];

    

    if (self) {

        // 不允许点击

        self.userInteractionEnabled =NO;

        

        // 设置字体

        self.titleLabel.font = SCBadgeNumberFontSize;

                

        // 设置居右

        self.titleLabel.textAlignment =NSTextAlignmentRight;

        

        // 字体颜色

        [selfsetTitleColor:[UIColorredColor] forState:UIControlStateNormal];

    }

    

    return self;

}


- (void)setBadgeValue:(NSString *)badgeValue

{

    // 设置属性

    _badgeValue = badgeValue;

    

    // 设置badgeView内容

    [selfsetBadgeViewWithbadgeValue:badgeValue];

}


- (void)setBadgeViewWithbadgeValue:(NSString *)badgeValue {

    // 设置文字内容

    [selfsetTitle:badgeValue forState:UIControlStateNormal];

    

    // 判断是否有内容,设置隐藏属性

    if (badgeValue.length ==0 ||

        [badgeValue isEqualToString:@"0"]||[JK_HelperisStringEmpty:badgeValue]) {

        // 数值内容为空或数值为0,则隐藏

        self.hidden =YES;

    }

    else {

        self.hidden =NO;

    }

    

    long badgeNumber = [badgeValue longLongValue];

    // 如果文字尺寸大于控件宽度

    if (badgeNumber > 9 && badgeNumber < 100) {

        // 显示中等大小图片

        [selfsetBackgroundImage:[UIImageimageNamed:@""]

                        forState:UIControlStateNormal];

    }

    else if (badgeNumber >99) {

        // 设置文字内容

        [selfsetTitle:@"99+"forState:UIControlStateNormal];

        // 显示内容和大红点背景

        [selfsetBackgroundImage:[UIImageimageNamed:@""]

                        forState:UIControlStateNormal];

        

    } else {

        // 设置图片

        //badge_cart_icon3

        [selfsetBackgroundImage:[UIImageimageNamed:@""]

                        forState:UIControlStateNormal];

        

    }

    

    // 尺寸自适应

    [selfsizeToFit];

}





@end


   在需要使用角标按钮的地方,直接用BageButton 来创建这个按钮就ok了.


原创粉丝点击