2015-06-27 20 views
13

Ho creato in modo programmatico un'etichetta che ho impostato adjustToFitWidth su true. Ora voglio cambiare il suo font, ma non posso farlo senza rendere costante la dimensione del font dell'etichetta. Qualcuno sa come posso cambiare solo il font e non la dimensione del font di un UILabel in swift?Come cambio il carattere di un UILabel in swift senza modificare la dimensione del carattere?

+3

Solo perché non si modifica la dimensione del carattere non significa necessariamente che due tipi di carattere diversi con lo stesso testo e le stesse dimensioni occuperanno lo stesso spazio. – nhgrif

risposta

30

Perché non ottenere la dimensione del carattere e specificare un nuovo carattere con questo valore?

let fontSize = self.label.font.pointSize; 
self.label.font = UIFont(name: "HelveticaNeue", size: fontSize) 
4

Si può fare in questo modo:

label.font = UIFont(name: "Arial", size: label.font.pointSize) 

Questo utilizzerà la stessa dimensione del carattere, "Arial" può essere qualunque famiglia che si desidera scegliere.

1

Una risposta migliorata.

Sottoclasse UILabel: aggiungere un file swift vuoto e denominarlo. e.g..EZLabel. Aggiungi il seguente codice.

import Foundation 
import UIKit 

class EZLabel: UILabel { 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     changeFontName() 
    } 

    func changeFontName() 
    { 
     self.font = UIFont(name: "Roboto", size: self.font.pointSize) 
    } 
} 

Il vantaggio è che non è necessario modificare ciascun carattere di UILabel nell'intero progetto, se necessario.