web-dev-qa-db-fra.com

Comment définir les caractères gras et italique sur UILabel sur iPhone/iPad?

Comment définir les caractères gras et italiques sur UILabel de l'iPhone/iPad? Quelqu'un pourrait-il m'aider?

120
Edi
sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];

Il existe une liste de noms de police que vous pouvez définir à la place de l'attribut 'fontWithName'. Le lien est ici lien texte

N'essayez pas de jouer avec les noms de police. En utilisant le descripteur de police, vous n'avez besoin d'aucun nom:

UILabel * label = [[UILabel alloc] init]; // use your label object instead of this
UIFontDescriptor * fontD = [label.font.fontDescriptor
            fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold
                            | UIFontDescriptorTraitItalic];
label.font = [UIFont fontWithDescriptor:fontD size:0];

size:0 signifie 'garder la taille telle quelle'

Avec Swift, essayez l'extension suivante:

extension UIFont {

    func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor()
            .fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits(traits))
        return UIFont(descriptor: descriptor, size: 0)
    }

    func boldItalic() -> UIFont {
        return withTraits(.TraitBold, .TraitItalic)
    }

}

Ensuite, vous pouvez l'utiliser de cette façon:

myLabel.font = myLabel.font.boldItalic()

ou même ajouter des traits supplémentaires comme Condensed:

myLabel.font = myLabel.font.withTraits(.TraitCondensed, .TraitBold, .TraitItalic)

Mise à jour pour Swift 4:

extension UIFont {
  var bold: UIFont {
    return with(traits: .traitBold)
  } // bold

  var italic: UIFont {
    return with(traits: .traitItalic)
  } // italic

  var boldItalic: UIFont {
    return with(traits: [.traitBold, .traitItalic])
  } // boldItalic


  func with(traits: UIFontDescriptorSymbolicTraits) -> UIFont {
    guard let descriptor = self.fontDescriptor.withSymbolicTraits(traits) else {
      return self
    } // guard

    return UIFont(descriptor: descriptor, size: 0)
  } // with(traits:)
} // extension

Utilisez-le comme suit:

myLabel.font = myLabel.font.bold

ou

myLabel.font = myLabel.font.italic

ou

myLabel.font = myLabel.font.with(traits: [ .traitBold, .traitCondensed ])

Swift 5

    func with(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont {
        guard let descriptor = self.fontDescriptor.withSymbolicTraits(UIFontDescriptor.SymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits)) else {
            return self
        }
        return UIFont(descriptor: descriptor, size: 0)
    }

    func without(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont {
        guard let descriptor = self.fontDescriptor.withSymbolicTraits(self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptor.SymbolicTraits(traits))) else {
            return self
        }
        return UIFont(descriptor: descriptor, size: 0)
    }
245

@Edinator jetez un coup d'œil à cela ..

myLabel.font = [UIFont boldSystemFontOfSize:16.0f]
myLabel.font = [UIFont italicSystemFontOfSize:16.0f];

utilisez l'une des options ci-dessus à l'heure que vous souhaitez

100
Sudhanshu

Vous pouvez définir n’importe quel style de police, famille ou taille de l’étiquette en cliquant sur la lettre "T" dans le champ Font.

 Label font settings

8
ViliusK

J'ai le même problème qui doit appliquer les caractères gras et italique sur une étiquette et un bouton. Vous pouvez simplement utiliser le code suivant pour obtenir cet effet:

myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];
6
Even Cheng

Avec la police par défaut du système iOS 7, vous utiliserez helvetica neue bold si vous souhaitez conserver la police par défaut du système.

    [titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];

Ou vous pouvez simplement l'appeler:

    [titleText setFont:[UIFont boldSystemFontOfSize:16.0]];
6
John Riselvato

jetez un oeil à: this URL

3
Olaf

J'ai fait une variation de la réponse de maksymilian wojakowski Où vous pouvez ajouter ou supprimer un trait 

extension UIFont {

    func withTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor
            .withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits))
        return UIFont(descriptor: descriptor!, size: 0)
    }
    func withoutTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor
            .withSymbolicTraits(  self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptorSymbolicTraits(traits)))
        return UIFont(descriptor: descriptor!, size: 0)
    }
    func bold() -> UIFont {
        return withTraits( .traitBold)
    }

    func italic() -> UIFont {
        return withTraits(.traitItalic)
    }

    func noItalic() -> UIFont {
        return withoutTraits(.traitItalic)
    }
    func noBold() -> UIFont {
        return withoutTraits(.traitBold)
    }
}

exemple

label.font = label.font.italic().bold()

utile lors de la réutilisation d'une cellule et que vous souhaitez supprimer l'italique que vous avez mis sur une étiquette d'une cellule précédente

3
tolbard
 btn.titleLabel.font=[UIFont fontWithName:@"Helvetica neue" size:10];
 btn.titleLabel.font =  [UIFont boldSystemFontOfSize:btnPrev.titleLabel.font.pointSize+3];

vous pouvez aussi utiliser la police de caractères/boutons en gras 

3
jayesh kavathiya

Exemple de texte en gras:

UILabel *titleBold = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 30)];
UIFont* myBoldFont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
[titleBold setFont:myBoldFont];

Exemple de texte en italique:

UILabel *subTitleItalic = [[UILabel alloc] initWithFrame:CGRectMake(10, 35, 200, 30)];
UIFont* myItalicFont = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]];
[subTitleItalic setFont:myItalicFont];
2
Mer

Comme cela a déjà été mentionné dans ces réponses, vous avez simplement besoin du nom de police correct. Je trouve que iOSFonts.com est la ressource la plus utile pour savoir exactement quel nom utiliser.

2
Richard Venable

J'ai récemment écrit un article sur les restrictions de l'API UIFont et sur la façon de le résoudre .. Vous pouvez le voir à ici

Avec le code que je fournis ici, vous pouvez obtenir votre UIFont désiré aussi facilement que:

UIFont *myFont = [FontResolver fontWithDescription:@"font-family: Helvetica; font-weight: bold; font-style: italic;"];

Et puis réglez-le sur votre UILabel (ou autre) avec: myLabel.font = myFont;

2
Jordi

Mise à jour de la réponse géniale de Maksymilian Wojakowski pour Swift 3

extension UIFont {

func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont? {
    guard let descriptorL = self.fontDescriptor.withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits)) else{
        return nil
    }
    return UIFont(descriptor: descriptorL, size: 0)
}

func boldItalic() -> UIFont? {
    return withTraits(traits: .traitBold, .traitItalic)
}

}

1
devjme

C'est très simple. Voici le code.

[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];

Cela vous aidera.

1
Ashu

Bien que la réponse fournie par @tolbard soit incroyable et fonctionne bien! 

Je pense que créer une extension pour quelque chose qui peut être réalisé en seulement une ligne de code, serait excessif. 

Vous pouvez également utiliser bold _ ​​italique pour le même texte dans votre label en définissant la propriété de police à l'aide de UIFontDescriptor comme indiqué ci-dessous dans l'exemple ci-dessous avec Swift 4.0

label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)

Les autres options incluent:

traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded

Pour plus d'informations sur la signification de ces traits symboliques? visitez ici

0
iOSer

Avec Swift 5

Pour le style = BOLD

label.font = UIFont(name:"HelveticaNeue-Bold", size: 15.0)

Pour le style = moyen

label.font = UIFont(name:"HelveticaNeue-Medium", size: 15.0)

Pour le style = mince

label.font = UIFont(name:"HelveticaNeue-Thin", size: 15.0)
0
swiftBoy

Souvent, le texte en gras est considéré comme une architecture d’information à un autre niveau et n’a donc pas de caractère gras et régulier sur une ligne. Vous pouvez donc le scinder en deux étiquettes/textViews, une normale et un gras italique. Et utilisez l'éditeur pour choisir les styles de police.

0