How Can I Underline the Button Text of UIButton?

后端 未结 4 1905
既然无缘
既然无缘 2021-02-03 14:09

The text is coming form a database. I would like to use it for a button and underline the text of the button. How can I do that?

相关标签:
4条回答
  • 2021-02-03 14:28

    In Swift 3 the following extension can be used for an underline:

    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)
        }
    } 
    
    0 讨论(0)
  • 2021-02-03 14:33

    To make this a bit simpler (it's a common requirement) I've built a simple UIButton subclass called BVUnderlineButton that you can drop straight into your projects.

    It's on Github at https://github.com/benvium/BVUnderlineButton (MIT licence).

    You can use it in a XIB / Storyboard or direct via code.

    0 讨论(0)
  • 2021-02-03 14:34

    For this you can subclass UILabel and overwrite its -drawRect method and then use your own UILabel and add a UIButton over it of custom type.

    Make your drawRect method in UILabel as

    - (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]; 
    
    }
    
    0 讨论(0)
  • 2021-02-03 14:34

    In iOS 6, NSAttributedString is used modifying the text, you can use "NSMutableAttributedString" for multi color text, font, style, etc using single UIButton or UILabel.

    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];
    
    0 讨论(0)
提交回复
热议问题