How to set textColor of UILabel in Swift
IphoneSwiftUilabelXcode6TextcolorIphone Problem Overview
When I try setting the color of a UILabel to the color of another UILabel using the code
myLabel.textColor = otherLabel.textColor
It doesn't change the color. When I use this code, however,
myLabel.textColor = UIColor.redColor()
It changes the color correctly. What's the issue with the first line?
Iphone Solutions
Solution 1 - Iphone
The easiest workaround is create dummy labels in IB, give them the text the color you like and set to hidden. You can then reference this color in your code to set your label to the desired color.
yourLabel.textColor = hiddenLabel.textColor
The only way I could change the text color programmatically was by using the standard colors, UIColor.white
, UIColor.green
...
Solution 2 - Iphone
This code example that follows shows a basic UILabel
configuration.
let lbl = UILabel(frame: CGRectMake(0, 0, 300, 200))
lbl.text = "yourString"
// Enum type, two variations:
lbl.textAlignment = NSTextAlignment.Right
lbl.textAlignment = .Right
lbl.textColor = UIColor.red
lbl.shadowColor = UIColor.black
lbl.font = UIFont(name: "HelveticaNeue", size: CGFloat(22))
self.view.addSubview(lbl)
Solution 3 - Iphone
I don't know why but to change the text color of the labels you need to divide the value you want with 255, because it works only until 1.0.
For example a dark blue color:
label.textColor = UIColor(red: 0.0, green: 0.004, blue: 0.502, alpha: 1.0)
Solution 4 - Iphone
Made an app with two labels in IB and the following:
@IBOutlet var label1: UILabel!
@IBOutlet var label2: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
label1.textColor = UIColor.redColor() // in Swift 3 it's UIColor.red
label2.textColor = label1.textColor
}
label2 color changed as expected, so your line works. Try println(otherLabel.textColor)
right before you set myLabel.textColor to see if the color's what you expect.
Solution 5 - Iphone
solution for swift 3 -
let titleLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
titleLabel.text = "change to red color"
titleLabel.textAlignment = .center
titleLabel.textColor = UIColor.red
Solution 6 - Iphone
If you are using Xcode 8 and swift 3. Use the following way to get the UIColor
label1.textColor = UIColor.red
label2.textColor = UIColor.black
Solution 7 - Iphone
I think most people want their placeholder text to be in grey and appear only once, so this is what I did:
-
Set your color in
viewDidLoad()
(not in IB)commentsTextView.textColor = UIColor.darkGray
-
Implement
UITextViewDelegate
to your controller -
add function to your controller
func textViewDidBeginEditing(_ textView: UITextView) { if (commentsTextView.textColor == UIColor.darkGray) { commentsTextView.text = "" commentsTextView.textColor = UIColor.black } }
This solution is simple.
Solution 8 - Iphone
The text field placeholder and the "is really" label is hard to see at night. So i change their color depending one what time of day it is.
Also make sure you connect the new IBOutlet isReallyLabel. To do so open Main.storybaord and control-drag from "Convert" view controller to the "is really" text field and select the isReallyLabel under Outlets.
WARNING: I have not tested to see if the application is open while the time of day swaps.
@IBOutlet var isReallyLabel: UILabel!
override func viewWillAppear(animated: Bool) {
let calendar = NSCalendar.currentCalendar()
let hour = calendar.component(.Hour, fromDate: NSDate())
let lightColor = UIColor.init(red: 0.961, green: 0.957, blue: 0945, alpha: 1)
let darkColor = UIColor.init(red: 0.184, green: 0.184 , blue: 0.188, alpha: 1)
switch hour {
case 8...18:
isReallyLabel.textColor = UIColor.blackColor()
view.backgroundColor = lightColor
default:
let string = NSAttributedString(string: "Value", attributes: [NSForegroundColorAttributeName: UIColor.whiteColor()])
textField.attributedPlaceholder = string
isReallyLabel.textColor = UIColor.whiteColor()
view.backgroundColor = darkColor
}
}
Solution 9 - Iphone
To change the text colour of UILable at runtime use NSAttributedText and do not set UILable.textColor.
let font = UIFont(name: "SFProText-Semibold", size: 16)!
if let messageToDisplay = currentUser?.lastMessage {
let attributedString = NSAttributedString(string: messageToDisplay, attributes: [NSAttributedString.Key.font: font, NSAttributedString.Key.foregroundColor: UIColor(named: "charcoal")!])
lastMessageLabel.attributedText = attributedString
} else {
let attributedString = NSAttributedString(string: "Start a conversation", attributes: [NSAttributedString.Key.font: font, NSAttributedString.Key.foregroundColor: UIColor(named: "ocean")!])
lastMessageLabel.attributedText = attributedString
}
Note charcoal and ocean are colours defined in Assets.xcassets. Resultant Label Images:
Above code worked well for me in Xcode 10.2.1 and Swift 5.
Solution 10 - Iphone
You can use as below and also can use various color just assign
myLabel.textColor = UIColor.yourChoiceOfColor
Ex:
Swift
myLabel.textColor = UIColor.red
Objective-C
[myLabel setTextColor:[UIColor redColor]];
or you can click here to Choose the color,
https://www.ralfebert.de/ios-examples/uikit/swift-uicolor-picker/