Carattere di sistema iPhone


98

Qual è il nome del carattere di sistema predefinito sull'iPhone?

Vorrei recuperarlo per personalizzare un file UIView.

Risposte:


109

Per la gioia dei puristi dei font di tutto il mondo, l'interfaccia del sistema iPhone utilizza Helvetica o una sua variante.

L'interfaccia del sistema originale per iPhone, iPhone 3G e iPhone 3GS utilizza Helvetica. Come notato per la prima volta dal sempre eccellente DaringFireball, l'iPhone 4 utilizza un font leggermente rivisto chiamato "Helvetica Neue". DaringFireball rileva inoltre che questa modifica è correlata al display dell'iPhone 4 piuttosto che al sistema operativo iOS 4 e ai vecchi modelli di iPhone con iOS 4 utilizzano ancora Helvetica come carattere di sistema.

I modelli di iPod rilasciati prima dell'iPhone utilizzano Chicago, Espy Sans o Myriad e utilizzano Helvetica dopo il rilascio dell'iPhone.

Da http://www.everyipod.com/iphone-faq/iphone-who-designed-iphone-font-used-iphone-ringtones.html

Per iOS9 è cambiato in San Fransisco . Vedi http://developer.apple.com/fonts per maggiori informazioni.


6
Attualmente è il font Helvetica Neue Regular.
Augustine

4
Per iOS9 è cambiato in San Fransisco. Vedi developer.apple.com/fonts per maggiori informazioni.
Freek Sanders,

103

Se stai facendo la personalizzazione programmatica, non codificare il carattere di sistema. Usa UIFont systemFontOfSize:, UIFont boldSystemFontOfSize:e UIFont italicSystemFontOfSize( la documentazione di Apple ).

Ciò è diventato particolarmente rilevante da iOS 7, che ha cambiato il carattere di sistema in Helvetica Neue.

Questo è diventato eccellente particolarmente rilevante dal momento che iOS 9, che ha cambiato il carattere di sistema di nuovo a San Francisco.


1
Non cambierò il carattere di sistema, è una cattiva idea. Ma lo voglio per alcuni html in UIWebView.
SK9

Questo non cambia il carattere di sistema: ti dà solo UIFontistanze del carattere di sistema utilizzando le dimensioni date e restituirà sempre i caratteri di sistema indipendentemente dai futuri aggiornamenti di iOS.
Adam Wright

Il carattere che vedo nella mia UIWebView non mi sembra Helvetica. Potrei sbagliarmi, ma impostare il carattere per la mia vista toglie il mio dubbio.
SK9

"non codificare il carattere di sistema" è un buon consiglio, o davvero un cattivo consiglio, a seconda della situazione. Personalmente, vorrei aver codificato Helvetica... farlo ora.
Dan Rosenstark

Totalmente d'accordo, non codificare, per favore. Questa dovrebbe essere la risposta giusta a questa domanda
Esteve

16

afaik iPhone utilizza " Helvetica " per impostazione predefinita <iOS 10


come si vede da altre risposte, dipende dalla versione iOS
ericosg

12

Swift

Carattere specifico

L'impostazione di un carattere specifico in Swift viene eseguita in questo modo:

let myFont = UIFont(name: "Helvetica", size: 17)

Se non conosci il nome, puoi ottenere un elenco dei nomi dei caratteri disponibili in questo modo:

print(UIFont.familyNames())

O un elenco ancora più dettagliato come questo:

for familyName in UIFont.familyNames() {
    print(UIFont.fontNamesForFamilyName(familyName))
}

Ma il carattere di sistema cambia da versione a versione di iOS. Quindi sarebbe meglio ottenere il carattere di sistema in modo dinamico.

Carattere di sistema

let myFont = UIFont.systemFontOfSize(17)

Ma abbiamo la dimensione hard-coded. E se gli occhi dell'utente sono cattivi e vogliono ingrandire il carattere? Ovviamente, potresti fare un'impostazione nella tua app per consentire all'utente di modificare la dimensione del carattere, ma sarebbe fastidioso se l'utente dovesse farlo separatamente per ogni singola app sul proprio telefono. Sarebbe più semplice apportare una sola modifica alle impostazioni generali ...

Carattere dinamico

let myFont = UIFont.preferredFont(forTextStyle: .body)

Ah, ora abbiamo il carattere di sistema nella dimensione scelta dall'utente per lo stile di testo con cui stiamo lavorando. Questo è il modo consigliato per impostare il carattere. Vedere Supporto del tipo dinamico per maggiori informazioni su questo.

Relazionato


11

Puoi sempre usare

UIFont *systemFont = [UIFont systemFontOfSize:12];
NSLog(@"what is it? %@ %@", systemFont.familyName, systemFont.fontName);

La risposta è:

Fino a iOS 6

 Helvetica Helvetica

iOS 7

.Helvetica Neue Interface .HelveticaNeueInterface-M3

ma puoi semplicemente usare Helvetica Neue


1
in Swift su iOS 9 ottengo .SFUIText-RegularcomesystemFont.familyName
Daniel


8

Non sono sicuro che esista un'API per ottenere il nome del carattere di sistema predefinito. Quindi ottengo il nome in questo modo:

    //get system default font
    UILabel *label = [[UILabel alloc] init];        
    fontname = label.font.fontName;
    [label release];

Sembra stupido ma funziona.


17
UIFont * font = [UIFont systemFontOfSize: 12.0]; <! - ottiene il carattere predefinito
Steven Baughman

Ci sono metodi più semplici .. Ma +1 per pensare fuori dagli schemi
Krishnabhadra

Sembra migliore: P [UIFont systemFontOfSize:[UIFont labelFontSize]];Vedi la mia risposta di seguito.
Anton Gaenko

3

Ecco alcuni aggiornamenti per supportare iOS 7 . Adesso Dynamic Font Sizesì.

Per tutte le app che supportano "Tipo dinamico", gli utenti possono selezionare una dimensione del carattere in iOS 7 che funzioni a livello di sistema, semplicemente visitando la sezione "Generale" in "Impostazioni" e selezionando "Dimensione carattere".

UIFont *dynamicFont  = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];

E l'elenco delle costanti, la spiegazione dettagliata è qui

NSString *const UIFontTextStyleHeadline;
NSString *const UIFontTextStyleSubheadline;
NSString *const UIFontTextStyleBody;
NSString *const UIFontTextStyleFootnote;
NSString *const UIFontTextStyleCaption1;
NSString *const UIFontTextStyleCaption2;

3

La categoria UIFontSystemFonts per UIFont ( UIInterface.h ) fornisce diverse dimensioni predefinite convenienti.

@interface UIFont (UIFontSystemFonts)
 + (CGFloat)labelFontSize;
 + (CGFloat)buttonFontSize;
 + (CGFloat)smallSystemFontSize;
 + (CGFloat)systemFontSize;
@end 

Lo uso per i messaggi di chat (etichette) e funziona bene quando ho bisogno di ottenere le dimensioni dei blocchi di testo.

 [UIFont systemFontOfSize:[UIFont labelFontSize]];

Buona programmazione!


3
UIFont *systemFont = [UIFont systemFontOfSize:[UIFont systemFontSize]];

Questo ti darà il carattere di sistema con la dimensione del carattere di sistema predefinita applicata per impostazione predefinita ai testi dell'etichetta.


2

Swift

Dovresti sempre usare le impostazioni di sistema e non codificare il nome del carattere perché il carattere predefinito potrebbe essere modificato da Apple in qualsiasi momento.

Ci sono un paio di caratteri predefiniti di sistema (normale, grassetto , corsivo ) con dimensioni diverse (etichetta, pulsante, altri):

let font = UIFont.systemFont(ofSize: UIFont.systemFontSize)
let font2 = UIFont.boldSystemFont(ofSize: UIFont.systemFontSize)
let font3 = UIFont.italicSystemFont(ofSize: UIFont.systemFontSize)

sapere che la dimensione del carattere predefinita dipende dalla vista di destinazione (etichetta, pulsante, altro)

Esempi:

let labelFont = UIFont.systemFont(ofSize: UIFont.labelFontSize)
let buttonFont = UIFont.systemFont(ofSize: UIFont.buttonFontSize)
let textFieldFont = UIFont.systemFont(ofSize: UIFont.systemFontSize)

0
  1. download del file .ttf richiesto

  2. aggiungi il file .ttf sotto la risorsa del bundle di copia, controlla se il file ttf è stato aggiunto sotto la risorsa

  3. In info.pllist aggiungi il nome del file ttf così com'è.

  4. ora apri il libro dei caratteri aggiungi il file .ttf nel libro dei caratteri, seleziona l'icona delle informazioni lì trovi il nome postscript.

  5. ora dai il nome postscript al posto del nome del font


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.