iOS Applicazione di caratteri personalizzati ai controlli all'interno di uno storyboard


Esempio

L'esempio seguente mostra come applicare caratteri personalizzati a una barra di navigazione e include correzioni per alcuni comportamenti bizzarri trovati in Xcode. Uno può anche applicare i caratteri personalizzati a qualsiasi altro UIControls come UILabels , UIButtons e altro utilizzando la finestra di ispezione attributi dopo che il carattere personalizzato è stato aggiunto al progetto. Si prega di notare i collegamenti esterni a campioni di lavoro e video nella parte inferiore.

  1. Seleziona la barra di navigazione all'interno del tuo controller di navigazione

barra di navigazione

  1. Cambia il carattere del titolo nell'Inspector degli attributi

titolo-font

(Probabilmente dovrai cambiare la Tinta della barra per la barra di navigazione prima che Xcode prenda il nuovo carattere)

Note (caveat)

Verificato che questo funziona su Xcode 7.1.1+. ( Vedi gli esempi sotto )

  1. È necessario attivare la tinta della barra di navigazione prima che il font abbia effetto (sembra un bug in Xcode, puoi reimpostarlo su default e il font si bloccherà)
  2. Se scegli un font di sistema ~ Assicurati che la dimensione non sia 0.0 (altrimenti il ​​nuovo font sarà ignorato)

taglia

  1. Sembra che questo funzioni senza problemi quando solo una NavBar si trova nella gerarchia della vista. Sembra che i NavBars secondari nello stesso stack siano ignorati. (Si noti che se si visualizza la barra di navigazione del controller di navigazione principale tutte le altre impostazioni personalizzate di navBar vengono ignorate).

Gotchas (deux)

Alcuni di questi vengono ripetuti, il che significa che è molto probabile che ne valga la pena.

  1. A volte lo xml dello storyboard si corrompe. Ciò richiede che rivedi la struttura nello Storyboard come modalità Codice sorgente (fai clic con il pulsante destro del mouse sul file storyboard> Apri come ...)
  2. In alcuni casi, il tag navigationItem associato all'attributo runtime definito dall'utente è stato impostato come figlio xml del tag view anziché del tag controller vista. In tal caso, rimuoverlo tra i tag per il corretto funzionamento.
  3. Attiva / disattiva la tinta della barra laterale per garantire che venga utilizzato il carattere personalizzato.
  4. Verificare il parametro di dimensione del carattere a meno che non si utilizzi uno stile di carattere dinamico
  5. La gerarchia della vista sovrascriverà le impostazioni. Sembra che sia possibile un font per stack.

Risultato

navbar-italico

Campioni

Gestione di caratteri personalizzati

Nota ~ Una buona lista di controllo può essere trovata dal sito Web di Code With Chris e puoi vedere il progetto di download di esempio.

Se hai il tuo font e vuoi usarlo nello storyboard, allora c'è una serie decente di risposte sulla seguente SO Question . Una risposta identifica questi passaggi.

  1. Ottieni file di font personalizzati (.ttf, .ttc)
  2. Importa i file dei font sul tuo progetto Xcode
  3. Nell'app-info.plist, aggiungi una chiave denominata Fonts fornita dall'applicazione. È un tipo di array, aggiungi tutti i nomi dei file dei font all'array, nota: inclusa l'estensione del file.
  4. Nello storyboard, sulla barra di navigazione, vai a Impostazioni attributi, fai clic sul pulsante icona destra dell'area di selezione Carattere. Nel pannello popup, scegli Carattere su Personalizzato e scegli il nome di carattere Famiglia incorporata.

Soluzione per i caratteri personalizzati

Quindi Xcode sembra naturalmente in grado di gestire i caratteri personalizzati su UINavigationItem ma questa funzione non si aggiorna correttamente (il font selezionato viene ignorato).

UINavigationItem

Per risolvere questo problema:

Un modo è quello di correggere usando lo storyboard e aggiungendo una riga di codice: prima aggiungi un UIView (UIButton, UILabel o qualche altra sottoclasse UIView) al View Controller (non l'elemento di navigazione ... Xcode non sta attualmente permettendo di farlo quello). Dopo aver aggiunto il controllo, puoi modificare il carattere nello storyboard e aggiungere un riferimento come uscita al View Controller. Assegna semplicemente quella vista a UINavigationItem.titleView. È anche possibile impostare il nome del testo nel codice, se necessario. Segnalato bug (23600285).

@IBOutlet var customFontTitleView: UIButton!

//Sometime later...    
self.navigationItem.titleView = customFontTitleView

Nota - Questo esempio è derivato da una risposta che ho postato su SO ( qui ).