web-dev-qa-db-fra.com

Comment changer la police d'un UILabel dans Swift sans changer la taille de la police?

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?

17
Matt Spoon

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)
35
Aeradriel

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.

4
iYoung

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.

2
A.G
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 */
1
Ahmed Samir