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?
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
...
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)
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)
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.
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
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
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:
-
Définissez votre couleur dans
viewDidLoad()
(pas dans IB)commentsTextView.textColor = UIColor.darkGray
Mettre en Œuvre
UITextViewDelegate
à votre contrôleur-
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.
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
}
}