Подтвердить что ты не робот

Как установить textColor UILabel в Swift

Когда я пытаюсь установить цвет UILabel на цвет другого UILabel, используя код

myLabel.textColor = otherLabel.textColor

Он не меняет цвет. Однако, когда я использую этот код,

myLabel.textColor = UIColor.redColor()

Правильно изменяет цвет. В чем проблема с первой строкой?

4b9b3361

Ответ 1

Самый простой способ - создать фиктивные метки в IB, дать им текст, который вам нравится, и установить скрытый. Затем вы можете ссылаться на этот цвет в своем коде, чтобы установить метку нужного цвета.

yourLabel.textColor = hiddenLabel.textColor

Единственным способом, с помощью которого я мог изменить цвет текста, было использование стандартных цветов, UIColor.white, UIColor.green...

Ответ 2

В приведенном ниже примере кода показана базовая конфигурация 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)

Ответ 3

Я не знаю, почему, но чтобы изменить цвет текста ярлыков, вам нужно разделить значение, которое вы хотите с 255, потому что оно работает только до 1.0.

Например, синий цвет:

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

Ответ 4

Сделано приложение с двумя метками в IB и следующее:

@IBOutlet var label1: UILabel!
@IBOutlet var label2: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    label1.textColor = UIColor.redColor() // in Swift 3 it UIColor.red
    label2.textColor = label1.textColor
}

label2 цвет изменился, как и ожидалось, поэтому ваша линия работает. Попробуйте println(otherLabel.textColor) прямо перед установкой myLabel.textColor, чтобы узнать, какой цвет вы ожидаете.

Ответ 5

для быстрого 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

Ответ 6

Если вы используете Xcode 8 и swift 3. Используйте следующий способ, чтобы получить UIColor

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

Ответ 7

Я думаю, что большинство людей хотят, чтобы их текст заполнителя был серым и появлялся только один раз, так вот что я сделал:

  • Установите цвет в viewDidLoad() (не в IB)

    commentsTextView.textColor = UIColor.darkGray
    
  • Внедрите UITextViewDelegate в контроллер

  • добавить функцию к контроллеру

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

Это решение прост.

Ответ 8

Заполнитель текста и ярлык "на самом деле" трудно увидеть ночью. Поэтому я изменяю их цвет в зависимости от того, какое время суток оно есть.

Также убедитесь, что вы подключили новый IBOutlet isReallyLabel. Для этого откройте Main.storybaord и перетащите регулятор из "Convert" в текстовое поле "действительно" и выберите isReallyLabel в Outlets.

ПРЕДУПРЕЖДЕНИЕ: я не тестировал, открыто ли приложение при смене времени суток.

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

Ответ 9

Чтобы изменить цвет текста 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.

Resultant Label Images

Выше код работал хорошо для меня в Xcode 10.2.1 и Swift 5.