J'ai créé par programmation une étiquette pour laquelle j'ai défini le paramètreajjustToFitWidth. Maintenant, je veux changer sa police, mais je ne peux pas le faire sans rendre constante la taille de la police de l'étiquette. Est-ce que quelqu'un sait comment je pourrais changer uniquement la police et non la taille de la police d'un UILabel dans swift?
Pourquoi ne pas obtenir la taille de la police et spécifier une nouvelle police avec cette valeur?
let fontSize = self.label.font.pointSize;
self.label.font = UIFont(name: "HelveticaNeue", size: fontSize)
Vous pouvez le faire comme ça:
label.font = UIFont(name: "Arial", size: label.font.pointSize)
Ceci utilisera la même taille de police, "Arial" peut être la famille que vous souhaitez.
Une réponse améliorée.
UILabel Subclassing: Ajoutez un fichier Swift vide et nommez-le. par exemple..EZLabel. Ajoutez le code suivant.
import Foundation
import UIKit
class EZLabel: UILabel {
override func awakeFromNib() {
super.awakeFromNib()
changeFontName()
}
func changeFontName()
{
self.font = UIFont(name: "Roboto", size: self.font.pointSize)
}
}
L'avantage est que vous n'avez pas besoin de changer la police de chaque police UILabel dans l'ensemble du projet si nécessaire.
extension UILabel {
override open func awakeFromNib() {
super.awakeFromNib()
changeFontName()
}
func changeFontName()
{
self.font = UIFont(name: "YOUR_FONT_NAME", size: self.font.pointSize)
}
}
/* Do this also for buttons and any uiviews */