下划线按钮

#import <UIKit/UIKit.h>

 

@interface CXUnderLineButton : UIButton

 

+ (CXUnderLineButton *) underlinedButton;

 

@end

 

 

#import "CXUnderLineButton.h"

 

@implementation CXUnderLineButton

 

- (id)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        // Initialization code

    }

    return self;

}

 

 

+ (CXUnderLineButton*) underlinedButton {

    CXUnderLineButton* button = [[CXUnderLineButton alloc] init];

    return button;

}

 

- (void) drawRect:(CGRect)rect {

    CGRect textRect = self.titleLabel.frame;

    

    // need to put the line at top of descenders (negative value)

    CGFloat descender = self.titleLabel.font.descender;

    

    CGContextRef contextRef = UIGraphicsGetCurrentContext();

    

    // set to same colour as text

    CGFloat offset = 1.f;

    CGContextSetStrokeColorWithColor(contextRef, self.highlighted?[UIColor grayColor].CGColor: self.titleLabel.textColor.CGColor);

    

    CGContextMoveToPoint(contextRef, textRect.origin.x, textRect.origin.y + textRect.size.height + descender + offset);

    

    CGContextAddLineToPoint(contextRef, textRect.origin.x + textRect.size.width, textRect.origin.y + textRect.size.height + descender + offset);

    

    CGContextClosePath(contextRef);

    

    CGContextDrawPath(contextRef, kCGPathStroke); 

 

/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect

{

    // Drawing code

}

*/

 

@end

 

posted @ 2014-07-29 10:22  bluefi  阅读(354)  评论(0编辑  收藏  举报