ChatGPT解决这个技术问题 Extra ChatGPT

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.

extension UILabel{ func font(size: CGFloat){ self.font = UIFont(descriptor: self.font.fontDescriptor, size: size) } }

P
PhillipJacobs

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)

This does in-fact change the pointSize property the font. However, the pointSize gets immediately reset to 17.0 before the label gets redrawn. So there's a bit more to it than that to actually see a different font size on the screen.
Are you setting the font to 17 anywhere? Storyboard?
I ran it on my iPhone 5 and your code works. It must be a bug in the simulator.
That's interesting. Not really surprised to see another bug though. Glad it's working
There's seriously something wrong with documentation when i just googled this instead of just looking it up because I knew it would be faster.
H
Hamid Shahsavari

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.


m
ma11hew28
label.font = UIFont.systemFontOfSize(20)

label.font = UIFont.systemFont(ofSize: 20) // in swift 3
This solution will not work for custom fonts. It will always return system font.
G
Gautam Sareriya

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)

Y
YannSteph

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)

This helped me. I changed the font size, its working in swift 4.
D
Dharmesh Kheni

You can give like this also

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

I
ICL1901

In Swift 3 again...

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

D
Dilip Jangid

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

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

a
aqsa arshad

Swift-3.1

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


l
lhmgrassi

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)

M
Mujtaba Mahmood

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!


N
Naresh

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.

https://i.stack.imgur.com/HHEm6.png

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

See below screens

https://i.stack.imgur.com/hGDFi.png

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

https://i.stack.imgur.com/cHoi7.png


E
Elshad Karimov

Swift 4.2

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

f
fullmoon

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

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

I
Ikhsan Assaat

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)


C
Casey Murray

In Swift 3:

label = UIFont.systemFont(ofSize: 20)

and to use system preset sizes, for example:

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

I think you forgot label.font
m
matt

Swift 3

label.font.withSize(16)

A
Adam Smaka

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

Z
ZahraAsgharzade

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)


I
Ittai Oren

SWIFT 3.1

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


This is not correct, and is not written using Cocoa naming conventions.
F
Fangming

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.

https://i.stack.imgur.com/eubAL.gif