Como altero o tamanho da fonte de um UILabel no Swift?


246

label.font.pointSize é somente leitura, então não tenho certeza de como alterá-lo.


extensão UILabel {fonte func (tamanho: CGFloat) {self.font = UIFont (descritor: self.font.fontDescriptor, tamanho: tamanho)}}
Mohammad Razipour

Respostas:


589

Você pode fazer assim:

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

Ou assim:

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

Isso usará a mesma fonte. 20 pode ser do tamanho que você quiser, é claro.

Nota: A última opção substituirá o peso da fonte atual para, regularportanto, se você deseja preservar o peso da fonte, use a primeira opção.

Atualização Swift 3 :

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

Atualização do Swift 4 :

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

ou

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

e se você usar as fontes do sistema

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

5
Isso de fato altera a propriedade pointSize da fonte. No entanto, o pointSize é redefinido imediatamente para 17.0 antes que o rótulo seja redesenhado. Portanto, há um pouco mais do que isso para realmente ver um tamanho de fonte diferente na tela.
Jay

1
Você está configurando a fonte para 17 em qualquer lugar? Storyboard?
Connor

1
Eu o executei no meu iPhone 5 e seu código funciona. Deve ser um bug no simulador.
Jay

Isso é interessante. Não é realmente surpresa ao ver outro bug embora. Fico feliz que está funcionando
Connor

5
Existe algo sério de errado com a documentação quando eu apenas pesquisei isso em vez de pesquisar apenas porque sabia que seria mais rápido.
Andrew Plummer

72

Eu acho que a melhor maneira de fazer isso - se manter a mesma fonte que já está atribuída ao UILabel seria:

(usando Swift)

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

(usando o Swift 3)

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

Idealmente, eu definiria isso no viewDidLayoutSubviewsmétodo, pois ele não precisa ser alterado toda vez que a exibição aparecer.



24

Podemos definir a fonte conforme nossa exigência, como

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

Se você quiser apenas alterar o tamanho da fonte, crio esta extensão

// Add extension

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

// Use

myLabel.setSizeFont(60)

Isso me ajudou. Eu mudei o tamanho da fonte, o seu trabalho em rápida 4.
R. Mohan

6

Você pode dar assim também

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



3

No swift3, suponha que seu nome UILable seja myLable e você queira alterar o tamanho da fonte, faça isso

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

2

Você pode usar uma extensão.

import UIKit

extension UILabel {

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

Para usá-lo:

self.myLabel.fontSize(100)

2

A Apple continua mudando as coisas sem motivo: Swift 4+:

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

obrigado apple por desperdiçar tempo com as pessoas para descobrir quais métodos de "tamanho da fonte" eles precisam usar!


2

Programaticamente

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

Através do story board

Para exibir várias linhas definidas como 0 (Zero), isso exibirá mais de uma linha na sua etiqueta.

Se você deseja exibir apenas 2 linhas, defina 2.

insira a descrição da imagem aqui

Se você deseja definir o tamanho mínimo da fonte para a etiqueta, clique em Autoshrink e selecione a opção Tamanho mínimo da fonte

Veja as telas abaixo

insira a descrição da imagem aqui

Defina aqui o tamanho mínimo da fonte

EX: 9 (nesta imagem)

Se o seu rótulo receber mais texto naquele momento, o texto do seu rótulo será reduzido até 9

insira a descrição da imagem aqui



1

Usei fontWithSizepara um rótulo com fonte clara do sistema, mas ela volta para a fonte normal do sistema.

Se você deseja manter as características da fonte, é melhor incluir os descritores.

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


1

No Swift 3:

label = UIFont.systemFont(ofSize: 20)

e usar tamanhos predefinidos do sistema, por exemplo:

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

Eu acho que você esqueceu label.font
Ethan Parker


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)

Além disso, se você deseja definir a fonte do rótulo em todas as visualizações do seu projeto, tente o seguinte appDelegate>didFinishLaunch: UILabel.appearance().font = UIFont("your font name", size: 15)


0

Caso você queira usar fonte personalizada com a opção negrito:

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

-1

SWIFT 3.1

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


Isso não está correto e não foi escrito usando as convenções de nomenclatura do cacau.
Womble

-1

É muito fácil e conveniente alterar o tamanho da fonte do storyboard, e você pode ver instantaneamente o resultado da alteração.

Na verdade, também é muito fácil alterar outros atributos de fonte no storyboard, como estilo, família de fontes etc.

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.