Underline button text in Swift
I have UIButton. In interface builder I set its title to be 'Attributed'. How can I make its title to be underlined from code in Swift?
@IBOutlet weak var myBtn: UIButton!
I created a function called on the touchUpInside event of this button:
var attributedString = NSMutableAttributedString(string:"new text")
var attrs = [
NSFontAttributeName : UIFont.systemFontOfSize(19.0),
NSForegroundColorAttributeName : UIColor.redColor()
]
var gString = NSMutableAttributedString(string:"g", attributes:attrs)
attributedString.appendAttributedString(gString)
myBtn.titleLabel?.attributedText = attributedString;
But still no result. Also I need to know how to access the underline attribute. Text, size and color stay the same.
Swift 5 / Xcode 12/13
@IBOutlet weak var myButton: UIButton!
let yourAttributes: [NSAttributedString.Key: Any] = [
.font: UIFont.systemFont(ofSize: 14),
.foregroundColor: UIColor.blue,
.underlineStyle: NSUnderlineStyle.single.rawValue
] // .double.rawValue, .thick.rawValue
override func viewDidLoad() {
super.viewDidLoad()
let attributeString = NSMutableAttributedString(
string: "Your button text",
attributes: yourAttributes
)
myButton.setAttributedTitle(attributeString, for: .normal)
}
Swift 4 / Xcode 9
@IBOutlet weak var myButton: UIButton!
let yourAttributes: [NSAttributedStringKey: Any] = [
NSAttributedStringKey.font: UIFont.systemFont(ofSize: 14),
NSAttributedStringKey.foregroundColor: UIColor.blue,
NSAttributedStringKey.underlineStyle: NSUnderlineStyle.styleSingle.rawValue
] // .styleDouble.rawValue, .styleThick.rawValue, .styleNone.rawValue
override func viewDidLoad() {
super.viewDidLoad()
let attributeString = NSMutableAttributedString(
string: "Your button text",
attributes: yourAttributes
)
myButton.setAttributedTitle(attributeString, for: .normal)
}
Swift 3 / Xcode 8
@IBOutlet weak var myButton: UIButton!
let yourAttributes: [String: Any] = [
NSFontAttributeName: UIFont.systemFont(ofSize: 14),
NSForegroundColorAttributeName: UIColor.white,
NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue
] // .styleDouble.rawValue, .styleThick.rawValue, .styleNone.rawValue
override func viewDidLoad() {
super.viewDidLoad()
let attributeString = NSMutableAttributedString(
string: "Your button text",
attributes: yourAttributes
)
myButton.setAttributedTitle(attributeString, for: .normal)
}
Here you go, just tested it. (works in xCode 7 Beta at least)
@IBOutlet weak var yourButton: UIButton!
var attrs = [
NSFontAttributeName : UIFont.systemFontOfSize(19.0),
NSForegroundColorAttributeName : UIColor.redColor(),
NSUnderlineStyleAttributeName : 1]
var attributedString = NSMutableAttributedString(string:"")
override func viewDidLoad() {
super.viewDidLoad()
let buttonTitleStr = NSMutableAttributedString(string:"My Button", attributes:attrs)
attributedString.appendAttributedString(buttonTitleStr)
yourButton.setAttributedTitle(attributedString, forState: .Normal)
}