题 如何在Swift中设置UILabel的textColor


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

myLabel.textColor = otherLabel.textColor

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

myLabel.textColor = UIColor.redColor()

它正确地改变了颜色。第一行有什么问题?


46
2017-09-14 19:34


起源


第一行没有问题。 otherLabel.textColor必须不是您在应用程序执行时的想法。 - Mick MacCallum
嗨kag,这篇文章对我很有帮助,特别是@Mayank Patel的回答。如果这些答案中的任何一个为您解决,您是否可以选择一个答案,以便为其他人更快地找到最佳选择。谢谢! - Dan Beaulieu


答案:


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

yourLabel.textColor = hiddenLabel.textColor

我可以通过编程方式更改文本颜色的唯一方法是使用标准颜色, UIColor.whiteUIColor.green...


29
2017-10-22 12:49



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


下面的代码示例显示了一个基本的 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)

36
2017-09-15 02:59





我不知道为什么要更改标签的文本颜色,你需要用255分割你想要的值,因为它只能工作到1.0。

例如深蓝色:

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

21
2018-04-21 12:57



谢谢 - 这正是我所寻找的,因为我得到的小应用程序(拾色器)显示255,我可以将颜色设置为我想要的任何颜色。完美搭配:) Swift 4顺便说一句。 - Aeger


在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之前,看看颜色是否符合您的预期。


6
2017-09-15 02:51





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

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

3
2017-10-31 09:20





快速解决方案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
2018-06-21 12:29





我想大多数人都希望他们的占位符文本是灰色的,只出现一次,所以这就是我所做的:

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

这个解决方案很简单。


2
2017-08-15 14:59





文本字段占位符和“真的”标签很难在晚上看到。所以我根据一天中的哪个时间改变颜色。

还要确保连接新的IBOutlet isReallyLabel。为此,打开Main.storybaord并控制 - 从“转换”视图控制器拖动到“真的”文本字段并选择Outlets下的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
2017-08-28 15:47