如何在Swift中设置UILabel的textColor


69

当我尝试使用代码将UILabel的颜色设置为另一个UILabel的颜色时

myLabel.textColor = otherLabel.textColor

它不会改变颜色。但是,当我使用此代码时,

myLabel.textColor = UIColor.redColor()

它可以正确更改颜色。第一行有什么问题?


4
第一行没有问题。在执行应用程序时,otherLabel.textColor一定不是您认为的样子。
Mick MacCallum 2014年

1
嗨,kag,这篇帖子对我很有帮助,特别是@Mayank Patel的回答。如果为您找到了这些答案中的任何一个,您是否可以偶然地选择一个答案,以便更快地为其他人找到最佳选择。谢谢!
Dan Beaulieu 2015年

Answers:


59

最简单的解决方法是在IB中创建虚拟标签,为它们提供您喜欢的颜色并将其设置为隐藏。然后,您可以在代码中引用此颜色,以将标签设置为所需的颜色。

yourLabel.textColor = hiddenLabel.textColor

我可以改变文字颜色的唯一途径是编程,通过使用标准色,UIColor.whiteUIColor.green...


您应该能够创建自定义颜色:UIColor
Erik P.

49

下面的代码示例显示了基本UILabel配置。

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)

谢谢,但是如何添加自定义颜色
Ananta Prasad

4
自定义颜色:lbl.textColor = UIColor(red: 10/256, green: 20/256, blue: 30/256, alpha: 1.0)
Mayank Patel

30

我不知道为什么,但是要更改标签的文本颜色,您需要将所需的值除以255,因为它只能工作到1.0。

例如深蓝色:

label.textColor = UIColor(red: 0.0, green: 0.004, blue: 0.502, alpha: 1.0)

1
谢谢-这正是我想要的,因为我得到的那个小应用程序(颜色选择器)显示255,我可以将颜色设置为所需的任何颜色。完美匹配:) Swift 4 btw。
艾格(Aeger)

7

用IB和以下内容制作了一个带有两个标签的应用程序:

@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颜色已按预期更改,因此您的线正常工作。println(otherLabel.textColor)在设置myLabel.textColor之前先尝试一下,以查看颜色是否符合您的期望。


4

快速解决方案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

3

如果您使用的是Xcode 8和Swift 3,请使用以下方法获取UIColor。

label1.textColor = UIColor.red
label2.textColor = UIColor.black

2

我认为大多数人都希望其占位符文本为灰色且仅出现一次,所以我就是这样做的:

  1. 设置颜色viewDidLoad()(不在IB中)

    commentsTextView.textColor = UIColor.darkGray
    
  2. 实施UITextViewDelegate到您的控制器

  3. 向您的控制器添加功能

    func textViewDidBeginEditing(_ textView: UITextView) {
        if (commentsTextView.textColor == UIColor.darkGray) {
           commentsTextView.text = ""
           commentsTextView.textColor = UIColor.black
        }
    }
    

这个解决方案很简单。


0

晚上很难看到文本字段占位符和“是”标签。因此,我会根据一天中的某个时间更改它们的颜色。

还要确保您连接了新的IBOutlet isReallyLabel。为此,请打开Main.storybaord并将控件从“转换”视图控制器拖动到“是真的”文本字段,然后在“出口”下选择isReallyLabel。

警告:我没有进行测试,以查看一天中的时间交换过程中应用程序是否打开。

@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
	}
}


0

要在运行时更改UILable的文本颜色,请使用NSAttributedText且不要设置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
}

注意, 木炭海洋是Assets.xcassets中定义的颜色。结果标签图像:

结果标签图像

上面的代码在Xcode 10.2.1和Swift 5中对我来说效果很好。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.