如何为UIButton的按钮文字加下划线?

时间:2011-03-26 12:49:48

标签: iphone objective-c cocoa-touch ios4

该文本来自数据库。我想将它用作按钮并在按钮文本下划线。我怎么能这样做?

4 个答案:

答案 0 :(得分:42)

在iOS 6中, NSAttributedString 用于修改文本,您可以使用单个UIButton或UILabel将“NSMutableAttributedString”用于多色文本,字体,样式等。

NSMutableAttributedString *titleString = [[NSMutableAttributedString alloc] initWithString:@"The Underlined text"];

// making text property to underline text-
[titleString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, [titleString length])];

// using text on button
[button setAttributedTitle: titleString forState:UIControlStateNormal];

答案 1 :(得分:3)

为此,您可以继承UILabel并覆盖其-drawRect方法,然后使用您自己的UILabel并在自定义类型上添加UIButton

将您的drawRect方法设置为UILabel

- (void)drawRect:(CGRect)rect 
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetRGBStrokeColor(context, 207.0f/255.0f, 91.0f/255.0f, 44.0f/255.0f, 1.0f);

    CGContextSetLineWidth(context, 1.0f);

    CGContextMoveToPoint(context, 0, self.bounds.size.height - 1);
    CGContextAddLineToPoint(context, self.bounds.size.width, self.bounds.size.height - 1);

    CGContextStrokePath(context);

    [super drawRect:rect]; 

}

答案 2 :(得分:2)

在Swift 3中,以下扩展名可用于下划线:

extension UIButton {
    func underlineButton(text: String) {
        let titleString = NSMutableAttributedString(string: text)
        titleString.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.styleSingle.rawValue, range: NSMakeRange(0, text.characters.count))
        self.setAttributedTitle(titleString, for: .normal)
    }
} 

答案 3 :(得分:0)

为了使这更简单(这是一个常见的要求)我已经构建了一个名为BVUnderlineButton的简单UIButton子类,您可以直接进入项目。

https://github.com/benvium/BVUnderlineButton(MIT许可证)的Github上。

您可以在XIB / Storyboard中使用它,也可以通过代码直接使用它。