1. ホーム
  2. text

[解決済み] UIButtonのテキストに下線を引く

2022-04-28 10:17:18

質問

UIButtonのタイトルに下線を引く方法を教えてください。 カスタムタイプのUIButtonがあり、タイトルに下線を引きたいのですが、インターフェースビルダーには下線を引くオプションがありません。

インターフェースビルダーでボタンのフォントオプションを選択すると、なし、シングル、ダブル、カラーが選択できますが、いずれもボタンのタイトルに変更を加えることはできません。

よろしくお願いします。

解決方法は?

UIUnderlinedButton.h

@interface UIUnderlinedButton : UIButton {

}


+ (UIUnderlinedButton*) underlinedButton;
@end

UIUnderlinedButton.m

@implementation UIUnderlinedButton

+ (UIUnderlinedButton*) underlinedButton {
    UIUnderlinedButton* button = [[UIUnderlinedButton alloc] init];
    return [button autorelease];
}

- (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
    CGContextSetStrokeColorWithColor(contextRef, self.titleLabel.textColor.CGColor);

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

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

    CGContextClosePath(contextRef);

    CGContextDrawPath(contextRef, kCGPathStroke);
}


@end