//
// Badgeva lueView.h
// BadgeView
//
// Created by YouXianMing on 16/5/17.
// Copyright © 2016年 YouXianMing. All rights reserved.
//
#import <UIKit/UIKit.h>
typedef NS_ENUM(NSUInteger, BadgePosition) {
BadgePositionCenterLeft,
BadgePositionCenterRight,
BadgePositionTopLeft,
BadgePositionTopRight,
BadgePositionBottomLeft,
BadgePositionBottomRight,
};
@interface Badgeva lueView : UIView
/**
* bedge值
*/
@property (nonatomic, strong) NSString *badgeva lue;
/**
* 被附着的view
*/
@property (nonatomic, weak) UIView *contentView;
/**
* 敏感字符增长宽度,默认值为4
*/
@property (nonatomic) CGFloat sensitiveTextWidth;
/**
* 敏感增长宽度,默认为10
*/
@property (nonatomic) CGFloat sensitiveWidth;
/**
* 固定高度,默认为20
*/
@property (nonatomic) CGFloat fixedHeight;
/**
* 位置信息,默认为BadgePositionTopRight
*/
@property (nonatomic) BadgePosition position;
/**
* 字体,默认为12
*/
@property (nonatomic, strong) UIFont *font;
/**
* 字体颜色,默认为白色
*/
@property (nonatomic, strong) UIColor *textColor;
/**
* bedge颜色,默认为红色
*/
@property (nonatomic, strong) UIColor *badgeColor;
/**
* 开始生效
*/
- (void)makeEffect;
/**
* 设置Badgeva lue
*
* @param value Badgeva lue
* @param animated 是否执行动画
*/
- (void)setBadgeva lue:(NSString *)value animated:(BOOL)animated;
@end
//
// Badgeva lueView.m
// BadgeView
//
// Created by YouXianMing on 16/5/17.
// Copyright © 2016年 YouXianMing. All rights reserved.
//
#import "Badgeva lueView.h"
#import "UIView+SetRect.h"
@interface Badgeva lueView ()
@property (nonatomic, strong) UILabel *label;
@end
@implementation Badgeva lueView
- (instancetype)init {
if (self = [super init]) {
self.sensitiveWidth = 10;
self.fixedHeight = 20;
self.sensitiveTextWidth = 4;
self.position = BadgePositionTopRight;
self.font = [UIFont systemFontOfSize:12.f];
self.textColor = [UIColor whiteColor];
self.badgeColor = [UIColor redColor];
}
return self;
}
- (void)makeEffect {
// 标签
self.label = [[UILabel alloc] init];
self.label.textColor = self.textColor;
self.label.textAlignment = NSTextAlignmentCenter;
self.label.font = self.font;
[self addSubview:self.label];
// 背景色
self.backgroundColor = self.badgeColor;
self.width = self.fixedHeight;
self.height = self.fixedHeight;
self.layer.cornerRadius = self.fixedHeight / 2.f;
self.layer.masksToBounds = YES;
[_contentView addSubview:self];
}
- (void)setBadgeva lue:(NSString *)badgeva lue animated:(BOOL)animated {
_badgeva lue = badgeva lue;
// 是否执行动画
if (animated) {
[UIView animateWithDuration:0.15f animations:^{
self.alpha = badgeva lue.length == 0 ? 0 : 1;
}];
} else {
self.alpha = badgeva lue.length == 0 ? 0 : 1;
}
// 如果值为空,则不执行后续操作
if (badgeva lue.length <= 0) {
return;
}
// 设置文本
self.label.text = badgeva lue;
[self.label sizeToFit];
// 更新尺寸
if (self.label.width + self.sensitiveTextWidth > self.width) {
self.width += self.sensitiveWidth;
} else {
self.width = self.fixedHeight;
}
// 更新文本尺寸
self.label.center = self.mid