iOS 带下划线 模拟超连接的button

效果:
忘记密码

代码:

   .h file    // 

@interface UIHyperlinksButton : UIButton {

    UIColor *lineColor;

    BOOL isHighlight;

}

-(void)setColor:(UIColor*)color;

+ (UIHyperlinksButton *) hyperlinksButton;

@end

     .m file    ///

@implementation UIHyperlinksButton


+ (UIHyperlinksButton*) hyperlinksButton {

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

    return button;

}


-(void)setColor:(UIColor *)color{

    lineColor = [color copy];

    [self setNeedsDisplay];

}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    [super touchesBegan:touches withEvent:event];

    isHighlight = YES;

    [self setColor:self.titleLabel.textColor];

    

}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

    [super touchesMoved:touches withEvent:event];

    

}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

    [super touchesEnded:touches withEvent:event];

    isHighlight = NO;

    [self setColor:self.titleLabel.highlightedTextColor];

    

}

-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{

    [super touchesCancelled:touches withEvent:event];

    [self setColor:self.titleLabel.highlightedTextColor];

}


- (void) drawRect:(CGRect)rect {

    CGRect textRect = self.titleLabel.frame;

    CGContextRef contextRef = UIGraphicsGetCurrentContext();

    

    if (isHighlight) {

        CGContextSetRGBFillColor(contextRef, 0.50.50.51.0);

        CGContextFillRect(contextRef, textRect);

        CGContextStrokePath(contextRef);

    }

    CGFloat descender = self.titleLabel.font.descender;

    if([lineColor isKindOfClass:[UIColor class]]){

        CGContextSetStrokeColorWithColor(contextRef, lineColor.CGColor);

    }

    

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

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

    

    CGContextClosePath(contextRef);

    CGContextDrawPath(contextRef, kCGPathStroke); 

@end 


原文:http://blog.sina.com.cn/s/blog_67b7cb7b0101msdo.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值