Как изменить размер шрифта UILabel в Swift?


246

label.font.pointSize только для чтения, поэтому я не уверен, как это изменить.


расширение UILabel {шрифт func (размер: CGFloat) {self.font = UIFont (дескриптор: self.font.fontDescriptor, размер: размер)}}
Мухаммед Разипур

Ответы:


590

Вы можете сделать это так:

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

Или вот так:

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

Это будет использовать тот же шрифт. 20 может быть любого размера, который вы хотите, конечно.

Примечание . Последний параметр будет перезаписывать текущий вес шрифта, regularпоэтому, если вы хотите сохранить вес шрифта, используйте первый параметр.

Swift 3 Обновление :

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

Swift 4 Обновление :

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

или

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

и если вы используете системные шрифты

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

5
Это фактически меняет свойство pointSize шрифта. Однако pointSize немедленно сбрасывается до 17.0, прежде чем метка перерисовывается. Так что есть нечто большее, чем просто увидеть другой размер шрифта на экране.
Джей

1
Вы устанавливаете шрифт на 17 где-нибудь? Раскадровка?
Коннор

1
Я запустил его на своем iPhone 5, и ваш код работает. Это должно быть ошибка в симуляторе.
Джей

Это интересно. Не очень удивлен, увидев еще одну ошибку, хотя. Рад, что это работает
Коннор

5
Там действительно что-то не так с документацией, когда я просто гуглил это вместо того, чтобы просто искать это, потому что я знал, что это будет быстрее.
Эндрю Пламмер

72

Я думаю, что лучший способ сделать это - если сохранить тот же шрифт, который уже назначен для UILabel :

(используя Swift)

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

(используя Swift 3)

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

В идеале я бы установил это в viewDidLayoutSubviewsметоде, так как он не должен изменяться каждый раз, когда появляется представление.


39
label.font = UIFont.systemFontOfSize(20)

5
label.font = UIFont.systemFont (ofSize: 20) // в быстром 3
Кан Бюль

Это решение не будет работать для пользовательских шрифтов. Он всегда возвращает системный шрифт.
Авайс Файяз

24

Мы можем установить шрифт согласно нашему требованию, как,

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

8

Если вы хотите просто изменить размер шрифта, я создаю это расширение

// Add extension

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

// Use

myLabel.setSizeFont(60)

Это помогло мне. Я изменил размер шрифта, он работает в Swift 4.
Р. Мохан,

6

Вы можете дать как это также

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



3

Предположим, что в swift3 ваше UILable имя - myLable, и вы хотите изменить размер шрифта.

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

2

Вы можете использовать расширение.

import UIKit

extension UILabel {

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

Чтобы использовать это:

self.myLabel.fontSize(100)

2

Apple продолжает менять вещи без причины: Swift 4+:

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

спасибо apple за потраченное время, чтобы выяснить, какие методы "размера шрифта" им нужно использовать!


2

Программный

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

Сквозь историю

Для отображения нескольких строк, установленных на 0 (ноль), на вашем ярлыке будет отображаться более одной строки.

Если вы хотите отобразить только 2 строки, установите 2.

введите описание изображения здесь

Если вы хотите установить минимальный размер шрифта для печати этикеток Нажмите автосокращения и выберите Минимальный размер шрифта вариант

Смотрите ниже экранов

введите описание изображения здесь

Здесь задайте минимальный размер шрифта

Пример: 9 (на этом изображении)

Если ваш ярлык получит больше текста, текст ярлыка будет уменьшен до 9

введите описание изображения здесь



1

Я использовал fontWithSizeдля метки со светлым системным шрифтом, но он возвращается к обычному системному шрифту.

Если вы хотите сохранить черты шрифта, лучше включить дескрипторы.

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


1

В Swift 3:

label = UIFont.systemFont(ofSize: 20)

и использовать заданные размеры системы, например:

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

Я думаю, что вы забыли label.font
Итан Паркер


0

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

0

swift 4:

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

Также, если вы хотите установить шрифт надписи во всех представлениях вашего проекта, попробуйте это appDelegate>didFinishLaunch: UILabel.appearance().font = UIFont("your font name", size: 15)


0

Если вы хотите использовать пользовательский шрифт с жирным шрифтом:

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

-1

SWIFT 3.1

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


Это не правильно и не написано с использованием соглашений об именах Какао.
Womble

-1

Изменить размер шрифта из раскадровки очень просто и удобно, и вы можете сразу увидеть результат изменения.

На самом деле, также очень легко изменить другие атрибуты шрифта на раскадровке, такие как стиль, семейство шрифтов и т. Д.

введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.