UIFont - como obter uma fonte fina do sistema

98

UIFonttem métodos para obter fonte regular ( systemFontOfSize) ou fonte em negrito ( boldSystemFontOfSize), mas como obter uma "fonte fina do sistema" disponível por meio do storyboard?

Passar "system-thin" para o UIFontContructor não funciona, este construtor só funciona para fontes que não são do sistema.

MiguelSlv
fonte

Respostas:

266

Você pode usar a espessura fina da fonte do sistema:

UIFont.systemFont(ofSize: 34, weight: UIFontWeightThin)

Lista de pesos disponíveis para São Francisco:

UIFontWeightUltraLight
UIFontWeightThin
UIFontWeightLight
UIFontWeightRegular
UIFontWeightMedium
UIFontWeightSemibold
UIFontWeightBold
UIFontWeightHeavy
UIFontWeightBlack

pesos de fonte são francisco

No iOS 11, UIFontWeight* foi renomeado para UIFont.Weight.*. Mais você pode obter aqui https://developer.apple.com/documentation/uikit/uifont.weight .

s1ddok
fonte
10
Apenas para iOS 8.2 e posterior, thnx
Husam
32

A partir do iOS 8.2 , agora você pode usarUIFont.systemFontOfSize(_ fontSize: CGFloat, weight weight: CGFloat):

UIFont.systemFontOfSize(19, weight: UIFontWeightLight)

iOS SDK forneceu constantes para pesos:

UIFontWeightUltraLight
UIFontWeightThin
UIFontWeightLight
UIFontWeightRegular
UIFontWeightMedium
UIFontWeightSemibold
UIFontWeightBold
UIFontWeightHeavy

Usar fonte do sistema é melhor do que criar uma fonte com base no nome da fonte quando você deseja usar fontes do sistema, já que o iOS pode alterar suas fontes do sistema no iOS (como quando eles fizeram com Helvetica Neue no iOS 7, e agora, San Francisco no iOS 9) .

Então, o que eu sugeriria é incluir o arquivo TTF da fonte que você deseja, usar esse arquivo ttf como fonte personalizada e usar a fonte personalizada em seu aplicativo.

Esta é a razão especial pela qual não gosto da Apple. Nunca faça o que a Apple diz. Sempre faça o que queremos. A Apple continua mudando a fonte padrão para cada sistema operacional.

Fahim Parkar
fonte
7

Além disso, se você quiser manter o mesmo tamanho de fonte e apenas alterar o peso, use o tamanho de fonte do elemento de destino. Por exemplo:

demoLabel.font = UIFont.systemFont(ofSize: demoLabel.font.pointSize, weight: UIFontWeightThin)

com isso, você pode manter o tamanho da fonte do rótulo padrão e apenas alterar o peso.

No iOS 11, UIFontWeightThin foi renomeado para UIFont.Weight.thin. Mais você pode obter aqui https://developer.apple.com/documentation/uikit/uifont.weight .

GrandFelix
fonte
2

Swift 4.2

 label.font = UIFont.systemFont(ofSize: 15, weight: UIFont.Weight.thin)
Pranit
fonte