2014-09-14 21 views
43

Quando ho provare a impostare il colore di un UILabel al colore di un altro UILabel utilizzando il codiceCome impostare textColor di UILabel a Swift

myLabel.textColor = otherLabel.textColor 

Non cambia il colore. Quando utilizzo questo codice, tuttavia,

myLabel.textColor = UIColor.redColor() 

Cambia il colore correttamente. Qual è il problema con la prima linea?

+4

Non c'è nessun problema con la prima linea. otherLabel.textColor non deve essere quello che pensi sia a questo punto nell'esecuzione della tua app. –

+1

Ciao kag, questo post mi è stato utile, in particolare la risposta di @Mayank Patel. Se qualcuna di queste risposte ha funzionato per te, potresti per caso selezionare una risposta per rendere più rapida la ricerca dell'opzione migliore per gli altri. Grazie! –

risposta

22

La soluzione più semplice è creare etichette fittizie in IB, dare loro il testo il colore che ti piace e impostato su nascosto. È quindi possibile fare riferimento a questo colore nel codice per impostare l'etichetta sul colore desiderato.

yourLabel.textColor = hiddenLabel.textColor 

L'unico modo ho potuto cambiare il colore del testo di programmazione è stato utilizzando i colori standard, UIColor.white, UIColor.green ...

+0

Dovresti essere in grado di creare colori personalizzati: [UIColor] (https://developer.apple.com/documentation/uikit/uicolor/1621925-init) –

6

Realizzato un app con due etichette in IB e il seguente:

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

colore label2 cambiato come previsto, quindi la linea funziona. Prova println(otherLabel.textColor) subito prima di impostare myLabel.textColor per vedere se il colore è quello che ti aspetti.

36

Questo esempio di codice che segue mostra una configurazione 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) 
19

Non so perché, ma per cambiare il colore del testo delle etichette è necessario dividere il valore desiderato con 255, perché funziona solo fino alla 1.0.

Per esempio un colore blu scuro:

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

Penso che molte persone vogliono che il loro testo segnaposto di essere in grigio e appaiono solo una volta, quindi questo è quello che ho fatto:

  1. Set il colore in viewDidLoad() (non in IB)

    commentsTextView.textColor = UIColor.darkGray 
    
  2. Implementare UITextViewDelegate al controller

  3. funzione metti in vostro controller

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

Questa soluzione è semplice.

0

Il segnaposto del campo di testo e l'etichetta "è veramente" è difficile da vedere di notte. Quindi cambio il loro colore a seconda dell'ora del giorno.

Assicurarsi inoltre di collegare la nuova IBOutlet isReallyLabel. Per fare ciò, aprire Main.storybaord e control-drag dal controller di visualizzazione "Convert" al campo di testo "is really" e selezionare isReallyLabel in Outlets.

ATTENZIONE: non ho eseguito il test per verificare se l'applicazione è aperta mentre gli scambi dell'ora del giorno.

@IBOutlet var isReallyLabel: UILabel! \t 
 
    
 
override func viewWillAppear(animated: Bool) { 
 
\t let calendar = NSCalendar.currentCalendar() 
 
\t let hour = calendar.component(.Hour, fromDate: NSDate()) 
 
\t \t 
 
\t let lightColor = UIColor.init(red: 0.961, green: 0.957, blue: 0945, alpha: 1) 
 
\t let darkColor = UIColor.init(red: 0.184, green: 0.184 \t , blue: 0.188, alpha: 1) 
 

 
\t \t 
 
\t switch hour { 
 
\t case 8...18: 
 
\t \t isReallyLabel.textColor = UIColor.blackColor() 
 
\t \t view.backgroundColor = lightColor 
 
\t default: 
 
\t \t let string = NSAttributedString(string: "Value", attributes: [NSForegroundColorAttributeName: UIColor.whiteColor()]) 
 
\t \t textField.attributedPlaceholder = string 
 
\t \t isReallyLabel.textColor = UIColor.whiteColor() 
 
\t \t view.backgroundColor = darkColor 
 
\t } 
 
}

3

Se si utilizza Xcode 8 e veloce 3. Utilizzare il seguente modo per ottenere l'UIColor

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

soluzione rapida 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 
Problemi correlati