Comment définir textColor de UILabel dans Swift

Lorsque j'essaie de définir la couleur D'un UILabel sur la couleur d'un autre UILabel en utilisant le code

myLabel.textColor = otherLabel.textColor

Ça ne change pas la couleur. Quand j'utilise ce code, cependant,

myLabel.textColor = UIColor.redColor()

, Il change la couleur correctement. Quel est le problème avec la première ligne?

47
demandé sur kag359six 2014-09-14 23:34:30

8 réponses

La solution la plus simple consiste à créer des étiquettes factices dans IB, à leur donner le texte de la couleur que vous aimez et à le définir sur hidden. Vous pouvez ensuite référencer cette couleur dans votre code pour définir votre étiquette à la couleur désirée.

yourLabel.textColor = hiddenLabel.textColor

La seule façon de changer la couleur du texte par programme était d'utiliser les couleurs standard, UIColor.white, UIColor.green...

32
répondu Piet Grootnoten 2017-01-17 13:51:47

Cet exemple de code qui suit montre une configuration de base 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
répondu Mayank Patel 2017-01-17 10:24:49

Je ne sais pas pourquoi mais pour changer la couleur du texte des étiquettes, vous devez diviser la valeur que vous voulez avec 255, car cela ne fonctionne que jusqu'à 1.0.

Par exemple une couleur bleu foncé:

label.textColor = UIColor(red: 0.0, green: 0.004, blue: 0.502, alpha: 1.0)
21
répondu loopidio 2015-04-21 12:57:02

Fait une application avec deux étiquettes dans IB et ce qui suit:

@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 couleur a changé comme prévu, de sorte que votre ligne fonctionne. Essayez println(otherLabel.textColor) juste avant de définir myLabel.textColor pour voir si la couleur est ce que vous attendez.

6
répondu terrafirma9 2017-01-18 16:31:44

Si vous utilisez Xcode 8 et swift 3. Utilisez la manière suivante pour obtenir L'UIColor

label1.textColor = UIColor.red
label2.textColor = UIColor.black
3
répondu Asfand Shabbir 2016-10-31 09:20:25

Solution pour 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
3
répondu Himanshu 2017-06-21 12:29:09

Je pense que la plupart des gens veulent que leur texte d'espace réservé soit en gris et n'apparaisse qu'une seule fois, donc c'est ce que j'ai fait:

  1. Définissez votre couleur dans viewDidLoad() (pas dans IB)

    commentsTextView.textColor = UIColor.darkGray
    
  2. Mettre en Œuvre UITextViewDelegate à votre contrôleur

  3. Ajouter une fonction à votre contrôleur

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

Cette solution est simple.

2
répondu Frank 2017-02-18 14:34:56

L'espace réservé du champ de texte et l'étiquette "est vraiment" sont difficiles à voir la nuit. Je change donc leur couleur en fonction de l'Heure de la journée.

Assurez-vous également de connecter le nouvel IBOutlet isReallyLabel. Pour ce faire ouvrez Principal.storybaord et control-faites glisser du contrôleur de vue " Convert "vers le champ de texte" is really " et sélectionnez isReallyLabel sous Outlets.

Avertissement: je n'ai pas testé pour voir si l'application est ouverte pendant l'Heure de la journée swap.

@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
répondu Jeff 2016-08-28 15:47:24