Как установить textColor of UILabel в Swift
когда я пытаюсь установить цвет UILabel в цвет другого UILabel с помощью кода
myLabel.textColor = otherLabel.textColor
он не меняет цвет. Однако, когда я использую этот код,
myLabel.textColor = UIColor.redColor()
Он изменяет цвет правильно. В чем проблема с первой строкой?
8 ответов
самый простой обходной путь-создать фиктивные метки В IB, дать им текст, который вам нравится, и установить скрытый. Затем вы можете ссылаться на этот цвет в своем коде, чтобы установить метку на нужный цвет.
yourLabel.textColor = hiddenLabel.textColor
единственный способ изменить цвет текста программно использовать стандартные цвета, UIColor.white
, UIColor.green
...
в следующем примере кода показан базовый 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)
Я не знаю, почему, но чтобы изменить цвет текста ярлыков, нужно разделить значение с 255, потому что он работает только до 1.0.
например, темно-синий цвет:
label.textColor = UIColor(red: 0.0, green: 0.004, blue: 0.502, alpha: 1.0)
сделал приложение с двумя метками в 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 изменился, как и ожидалось, поэтому ваша линия работает. Попробуй!--1--> прямо перед установкой myLabel.textColor, чтобы увидеть, если цвет то, что вы ожидаете.
Если вы используете Xcode 8 и swift 3. Используйте следующий способ, чтобы получить UIColor
label1.textColor = UIColor.red
label2.textColor = UIColor.black
решение для 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
Я думаю, что большинство людей хотят, чтобы их текст заполнителя был серым и появлялся только один раз, так что это то, что я сделал:
-
установите цвет в
viewDidLoad()
(не в IB)commentsTextView.textColor = UIColor.darkGray
реализовать
UITextViewDelegate
контроллер-
добавить функцию к контроллеру
func textViewDidBeginEditing(_ textView: UITextView) { if (commentsTextView.textColor == UIColor.darkGray) { commentsTextView.text = "" commentsTextView.textColor = UIColor.black } }
это решение простое.
заполнитель текстового поля и метка "действительно" трудно увидеть ночью. Поэтому я меняю их цвет в зависимости от времени суток.
также убедитесь, что вы подключили новый IBOutlet isReallyLabel. Для этого откройте Main.storybaord и control-перетащите из контроллера вида "конвертировать" в текстовое поле "действительно" и выберите 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
}
}