How do I set bold and italic on UILabel of iPhone/iPad?

IosObjective CSwiftUilabelUifont

Ios Problem Overview


How do I set bold and italic on UILabel of iPhone/iPad? I searched the forum but nothing helped me. Could anyone help me?

Ios Solutions


Solution 1 - Ios

Don't try to play with the font names. Using the font descriptor you need no names:

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 means 'keep the size as is'

With Swift try the following extension:

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

}

Then you may use it this way:

myLabel.font = myLabel.font.boldItalic()

or even add additional traits like Condensed:

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

##Update for 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

Use it as follows:

myLabel.font = myLabel.font.bold

or

myLabel.font = myLabel.font.italic

or

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

##Update for Swift 5

extension UIFont {
    var bold: UIFont {
        return with(.traitBold)
    }
    
    var italic: UIFont {
        return with(.traitItalic)
    }
    
    var boldItalic: UIFont {
        return with([.traitBold, .traitItalic])
    }
    
    
    
    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)
    }
}

Solution 2 - Ios

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

There is a list of font names that you can set in place of 'fontWithName' attribute.The link is here

Solution 3 - Ios

@Edinator have a look on this..

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

use any one of the above at a time you want

Solution 4 - Ios

You can set any font style, family, size for the label, by clicking on letter "T" in Font field.

Label font settings

Solution 5 - Ios

Swift 3

Bold:

let bondFont = UIFont.boldSystemFont(ofSize:UIFont.labelFontSize)

Italic:

let italicFont = UIFont.italicSystemFont(ofSize:UIFont.labelFontSize)

Solution 6 - Ios

I have the same issue that need to apply both Bold and Italic on a label and button. You can simply use following code to achieve this effect:

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

Solution 7 - Ios

With iOS 7 system default font, you'll be using helvetica neue bold if you are looking to keep system default font.

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

Or you can simply call it:

    [titleText setFont:[UIFont boldSystemFontOfSize:16.0]];

Solution 8 - Ios

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

you can do bold label/button font also using this

Solution 9 - Ios

I made a variation of the response of maksymilian wojakowski where you can add or remove a trait(s)

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()

it useful when reusing cell and you want to remove the italic you put on a label in a previous cell

Solution 10 - Ios

I recently wrote a blog post about the restrictions of the UIFont API and how to solve it. You can see it at here

With the code I provide there, you can get your desired UIFont as easy as:

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

And then set it to your UILabel (or whatever) with: myLabel.font = myFont;

Solution 11 - Ios

As has already been mentioned in these answers, you just need the right font name. I find that iOSFonts.com is the most helpful resource for knowing exactly what name to use.

Solution 12 - Ios

Updating Maksymilian Wojakowski's awesome answer for 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)
    }
}

Solution 13 - Ios

Example Bold text:

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

Example Italic text:

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

Solution 14 - Ios

Although the answer provided by @tolbard is amazing and works well!

I feel creating an extension for something that can be achieved in just a line of code, would be an over kill.

You can get bold as well italic styling for the same text in your label by setting up the font property using UIFontDescriptor as shown below in the example below using Swift 4.0:

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

Other options include:

traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded

For more information on what those symbolic traits mean? visit here

Solution 15 - Ios

This is very simple. Here is the code.

[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];

This will help you.

Solution 16 - Ios

Many times the bolded text is regarded in an information architecture way on another level and thus not have bolded and regular in one line, so you can split it to two labels/textViews, one regular and on bold italic. And use the editor to choose the font styles.

Solution 17 - Ios

With Swift 5

> For style = BOLD

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

> For style = Medium

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

> For style = Thin

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

Solution 18 - Ios

Just want to mention that,

UIFont.systemFont(ofSize: 16, weight: UIFont.Weight.bold)
UIFont.boldSystemFont(ofSize: 16)

They have different outcome...

Solution 19 - Ios

Updated for Swift 5 and respects the device's preferred size category.

// Bold
label.font = UIFont.systemFont(ofSize: UIFont.preferredFont(forTextStyle: .body).pointSize, weight: .bold)

// Italic
label.font = UIFont.italicSystemFont(ofSize: UIFont.preferredFont(forTextStyle: .body).pointSize)

The other answers posted here are good, but have hard-coded pointSizes.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionEdiView Question on Stackoverflow
Solution 1 - IosMaksymilian WojakowskiView Answer on Stackoverflow
Solution 2 - IosMobile Developer iOS AndroidView Answer on Stackoverflow
Solution 3 - IosSudhanshuView Answer on Stackoverflow
Solution 4 - IosViliusKView Answer on Stackoverflow
Solution 5 - IosVyacheslavView Answer on Stackoverflow
Solution 6 - IosEven ChengView Answer on Stackoverflow
Solution 7 - IosJohn RiselvatoView Answer on Stackoverflow
Solution 8 - Iosjayesh kavathiyaView Answer on Stackoverflow
Solution 9 - IostolbardView Answer on Stackoverflow
Solution 10 - IosJordiView Answer on Stackoverflow
Solution 11 - IosRichard VenableView Answer on Stackoverflow
Solution 12 - IosdevjmeView Answer on Stackoverflow
Solution 13 - IosMerView Answer on Stackoverflow
Solution 14 - IosiOSerView Answer on Stackoverflow
Solution 15 - IosAshuView Answer on Stackoverflow
Solution 16 - IosPatrik Rikama-HinnenbergView Answer on Stackoverflow
Solution 17 - IosswiftBoyView Answer on Stackoverflow
Solution 18 - Iosysong4View Answer on Stackoverflow
Solution 19 - IosrohanphadteView Answer on Stackoverflow