接口部分
@interface UnderLineButton : UIButton
@property (nonatomic,assign) CGSize lineSize;
@property (nonatomic,strong) UIColor *lineColor;
@property (nonatomic,assign) BOOL isFollowTextWidth;
-(void)setFont:(UIFont *)font isSelected:(BOOL)isSelected;
@end
实现部分
@interface UnderLineButton ()
@property (nonatomic,strong) UIView *underLine;
@property (nonatomic,strong) UIFont *normalFont;
@property (nonatomic,strong) UIFont *selectFont;
@end
@implementationSUnderLineButton
{
CGSize _lineSize;
}
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self addSubview:self.underLine];
self.isFollowTextWidth = YES;
self.lineSize = CGSizeMake(frame.size.width, 3);
}
return self;
}
-(void)setSelected:(BOOL)selected
{
[super setSelected:selected];
if (selected) {
self.underLine.hidden = NO;
if (self.selectFont) {
self.titleLabel.font = self.selectFont;
}
}
else
{
self.underLine.hidden = YES;
if (self.normalFont) {
self.titleLabel.font = self.normalFont;
}
}
}
-(void)setTitle:(NSString *)title forState:(UIControlState)state
{
[super setTitle:title forState:state];
[self layoutUnderLine];
}
-(UIView *)underLine
{
if (_underLine == nil) {
_underLine = [[UIView alloc] init];
_underLine.backgroundColor = [UIColor whiteColor];
_underLine.layer.cornerRadius = 1;
_underLine.layer.masksToBounds = YES;
_underLine.hidden = !self.selected;
[self layoutUnderLine];
}
return _underLine;
}
-(void)setIsFollowTextWidth:(BOOL)isFollowTextWidth
{
_isFollowTextWidth = isFollowTextWidth;
[self layoutUnderLine];
}
-(void)setLineColor:(UIColor *)lineColor
{
self.underLine.backgroundColor = lineColor;
}
-(UIColor *)lineColor
{
return self.underLine.backgroundColor;
}
-(void)setLineSize:(CGSize)lineSize
{
_lineSize = lineSize;
[self layoutUnderLine];
}
-(CGSize)lineSize
{
return self.underLine.frame.size;
}
-(void)layoutSubviews
{
[super layoutSubviews];
[self layoutUnderLine];
}
-(void)layoutUnderLine
{
if (self.isFollowTextWidth) {
CGFloat lineW = [self.titleLabel.text getWidthWithFont:self.titleLabel.font height:self.frame.size.height];
CGFloat lineH = _lineSize.height;
self.underLine.frame = CGRectMake(self.frame.size.width / 2.0 - lineW / 2.0, self.frame.size.height - lineH, lineW, lineH);
}
else
{
CGFloat lineW = _lineSize.width;
CGFloat lineH = _lineSize.height;
self.underLine.frame = CGRectMake(self.frame.size.width / 2.0 - lineW / 2.0, self.frame.size.height - lineH, lineW, lineH);
}
}
-(void)setFont:(UIFont *)font isSelected:(BOOL)isSelected;
{
if (isSelected == YES) {
self.selectFont = font;
}
else
{
self.normalFont = font;
}
}
@end
网友评论