Jay
Jay

Reputation: 9612

How do I change the font size of a UILabel in Swift?

label.font.pointSize is read-only, so I'm not sure how to change it.

Upvotes: 302

Views: 359057

Answers (21)

Badr Bujbara
Badr Bujbara

Reputation: 8701

In case you want to use custom font with bold option:

nameLabel.font = UIFont(name: "GillSans-Bold", size: 27)

Upvotes: 4

Connor
Connor

Reputation: 64684

You can do it like this:

label.font = UIFont(name: label.font.fontName, size: 20)

Or like this:

label.font = label.font.withSize(20)

This will use the same font. 20 can be whatever size you want of course.

Note: The latter option will overwrite the current font weight to regular so if you want to preserve the font weight use the first option.

Swift 3 Update:

label.font = label.font.withSize(20)

Swift 4 Update:

label.font = label.font.withSize(20)

or

label.font = UIFont(name:"fontname", size: 20.0)

and if you use the system fonts

label.font = UIFont.systemFont(ofSize: 20.0)
label.font = UIFont.boldSystemFont(ofSize: 20.0)
label.font = UIFont.italicSystemFont(ofSize: 20.0)

Upvotes: 697

ZahraAsgharzade
ZahraAsgharzade

Reputation: 309

swift 4:

label.font = UIFont("your font name", size: 15)

also if you want to set the label font in all views in your project try this in appDelegate>didFinishLaunch: UILabel.appearance().font = UIFont("your font name", size: 15)

Upvotes: 0

Elshad Karimov
Elshad Karimov

Reputation: 322

Swift 4.2

myLabel.font = UIFont.systemFont(ofSize: 12)

Upvotes: 2

Naresh
Naresh

Reputation: 17932

Programmatically

label.font = UIFont.systemFont(ofSize: 20.0)
label.font = UIFont.boldSystemFont(ofSize: 20.0)
label.font = UIFont.italicSystemFont(ofSize: 20.0)

label.font = UIFont(name:"Helvetica Neue", size: 20.0)//Set your font name here

Through Story board

To display multiple lines set 0(Zero), this will display more than one line in your label.

If you want to display only 2 lines set 2.

enter image description here

If you want to set minimum font size for label Click Autoshrink and Select Minimum Font Size option

See below screens

enter image description here

Here set minimum font size

EX: 9 (In this image)

If your label get more text at that time your label text will be shrink upto 9

enter image description here

Upvotes: 2

Chosen
Chosen

Reputation: 892

Apple keep changing things for no reason: Swift 4+:

myLabel.font = UIFont.systemFont(ofSize: 16)

thanks apple for wasting people time to figure out what "font size" methods they need to use!

Upvotes: 2

lhmgrassi
lhmgrassi

Reputation: 140

You can use an extension.

import UIKit

extension UILabel {

    func sizeFont(_ size: CGFloat) {
        self.font = self.font.withSize(size)
    }
}

To use it:

self.myLabel.fontSize(100)

Upvotes: 2

Fangming
Fangming

Reputation: 25280

It's very easy and convenient to change font size from storyboard, and you can instantly see the result of the change.

Actually, it's also very easy to change other font attributes on storyboard too, like style, font family, etc.

enter image description here

Upvotes: -1

aqsa arshad
aqsa arshad

Reputation: 831

Swift-3.1

label.font = UIFont.systemFont(ofSize: 12)

Upvotes: 3

Ittai Oren
Ittai Oren

Reputation: 542

SWIFT 3.1

Label.font = Label.font.withSize(NewValue)

Upvotes: -1

Adam Smaka
Adam Smaka

Reputation: 6413

Swift 3.1

import UIKit

extension UILabel {
    var fontSize: CGFloat {
        get {
            return self.font.pointSize
        }
        set {
            self.font =  UIFont(name: self.font.fontName, size: newValue)!
            self.sizeToFit()
        }
    }
}

Upvotes: 0

matt
matt

Reputation: 625

Swift 3

label.font.withSize(16)

Upvotes: 0

mouselangelo
mouselangelo

Reputation: 741

I think the best way to do this - if keeping the same font that is already assigned to the UILabel would be:

(using Swift)

label.font = label.font.fontWithSize(20)

(using Swift 3)

label.font = label.font.withSize(20)

Ideally I would set this in the viewDidLayoutSubviews method, as it doesn't need to change every time the view appears.

Upvotes: 74

Dilip Jangid
Dilip Jangid

Reputation: 774

In swift3, suppose your UILable name is myLable and you want to change its font size do this

myLable.font = UIFont.systemFont(ofSize: 10)

Upvotes: 3

ICL1901
ICL1901

Reputation: 7778

In Swift 3 again...

myLabel.font = myLabel.font.withSize(18)

Upvotes: 5

Casey Murray
Casey Murray

Reputation: 1582

In Swift 3:

label = UIFont.systemFont(ofSize: 20)

and to use system preset sizes, for example:

label = UIFont.systemFont(ofSize: UIFont.smallSystemFontSize)

Upvotes: 1

Ikhsan Assaat
Ikhsan Assaat

Reputation: 910

I used fontWithSize for a label with light system font, but it changes back to normal system font.

If you want to keep the font's traits, better to include the descriptors.

label.font = UIFont(descriptor: label.font.fontDescriptor(), size: 16.0)

Upvotes: 1

Gautam Sareriya
Gautam Sareriya

Reputation: 1833

We can set font as per our requirement like,

label.font = UIFont(name: "Avenir-Light", size: 15.0)
label.font = UIFont.boldSystemFontOfSize(15)
label.font = UIFont.italicSystemFontOfSize(15)
label.font = UIFont.systemFontOfSize(17)

Upvotes: 24

Santo
Santo

Reputation: 1651

You can give like this also

labelName.font = UIFont(name: "systemFont", size: 30)

Upvotes: 6

ma11hew28
ma11hew28

Reputation: 126547

label.font = UIFont.systemFontOfSize(20)

Upvotes: 40

YanSte
YanSte

Reputation: 10839

If you want just change size of your font i create this extension

// Add extension

extension UILabel {
    func setSizeFont (sizeFont: Double) {
        self.font =  UIFont(name: self.font.fontName, size: sizeFont)!
        self.sizeToFit()
    }
}

// Use

myLabel.setSizeFont(60)

Upvotes: 10

Related Questions