How do you set an Attributed Title Color for State in Swift
// create the buttonlet button = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 50))button.backgroundColor = UIColor.yellowColor()// set the attributed title for different states// .Selectedlet mySelectedAttributedTitle = NSAttributedString(string: "Click Here", attributes: [NSForegroundColorAttributeName : UIColor.greenColor()])button.setAttributedTitle(mySelectedAttributedTitle, forState: .Selected)// .Normallet myNormalAttributedTitle = NSAttributedString(string: "Click Here", attributes: [NSForegroundColorAttributeName : UIColor.blueColor()])button.setAttributedTitle(myNormalAttributedTitle, forState: .Normal)
Swift 4 & 5
// create the button let button = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 50)) button.backgroundColor = UIColor.yellow // set the attributed title for different states // .Selected let mySelectedAttributedTitle = NSAttributedString(string: "Click Here", attributes: [NSAttributedStringKey.foregroundColor : UIColor.green]) button.setAttributedTitle(mySelectedAttributedTitle, for: .selected) // .Normal let myNormalAttributedTitle = NSAttributedString(string: "Click Here", attributes: [NSAttributedStringKey.foregroundColor : UIColor.blue]) button.setAttributedTitle(myNormalAttributedTitle, for: .normal)
Swift 3
// create the buttonlet button = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 50))button.backgroundColor = UIColor.yellow// set the attributed title for different states// .Selectedlet mySelectedAttributedTitle = NSAttributedString(string: "Click Here", attributes: [NSForegroundColorAttributeName : UIColor.green])button.setAttributedTitle(mySelectedAttributedTitle, for: .selected)// .Normallet myNormalAttributedTitle = NSAttributedString(string: "Click Here", attributes: [NSForegroundColorAttributeName : UIColor.blue])button.setAttributedTitle(myNormalAttributedTitle, for: .normal)
Swift 5 functions to set the color and font.
class func setButtonTextColor( _ button:UIButton , color:UIColor ) { if let str = button.titleLabel?.attributedText { let attributedString = NSMutableAttributedString( attributedString: str ) attributedString.removeAttribute(.foregroundColor, range: NSRange.init(location: 0, length: attributedString.length)) attributedString.addAttributes( [NSAttributedString.Key.foregroundColor : color], range: NSRange.init(location: 0, length: attributedString.length) ) button.setAttributedTitle(attributedString, for: .normal) }}class func setButtonTextFont( _ button:UIButton, font: UIFont) { if let str = button.titleLabel?.attributedText { let attributedString = NSMutableAttributedString( attributedString: str ) attributedString.removeAttribute(.font, range: NSRange.init(location: 0, length: attributedString.length)) attributedString.addAttributes( [NSAttributedString.Key.font : font ], range: NSRange.init(location: 0, length: attributedString.length) ) button.setAttributedTitle(attributedString, for: .normal) }}