Xcode 6 presenta una nuova caratteristica in cui caratteri e dimensioni dei caratteri a UILabel
, UITextField
e UIButton
possono essere impostate automaticamente in base alla classe dimensione della configurazione del dispositivo corrente, nel storyboard. Ad esempio, puoi impostare a UILabel
per utilizzare la dimensione del carattere 12 su "qualsiasi larghezza, altezza compatta" (come sugli iPhone in orizzontale) e la dimensione 18 su configurazioni "larghezza regolare, altezza regolare" (come sugli iPad ). Ulteriori informazioni sono disponibili qui:
developer.apple.com/size_class
Questa è una grande funzionalità in teoria perché potrebbe rendere non necessario impostare a livello di codice diversi caratteri sulle funzionalità dell'interfaccia utente in base alla configurazione del dispositivo. In questo momento, ho un codice condizionale che imposta i caratteri in base al tipo di dispositivo, ma ovviamente ciò significa che devo impostare i caratteri a livello di codice ovunque nell'app. Quindi inizialmente ero davvero entusiasta di questa funzione, ma ho scoperto che ha un grave problema di utilizzo effettivo per me (forse un bug). Tieni presente che sto compilando l'SDK 8 e sto impostando un obiettivo di distribuzione minimo di iOS 8 , quindi questo non ha nulla a che fare con la compatibilità con le vecchie versioni di iOS.
Il problema è questo: se imposto caratteri di dimensioni diverse per classi di dimensioni diverse e utilizzo il carattere "Sistema" fornito da iOS , tutto funziona come previsto e le dimensioni dei caratteri cambiano in base alla classe di dimensioni. Se utilizzo un carattere personalizzato fornito dalla mia applicazione (sì, l'ho impostato correttamente nel pacchetto dell'applicazione, poiché funziona a livello di programmazione) e imposto il carattere personalizzato su un'etichetta in uno storyboard XCode 6 , anche questo funziona come previsto. Ma quando provo a utilizzare dimensioni diverse del carattere personalizzato per classi di dimensioni diverse, nello storyboard, improvvisamente non funziona. L'unica differenza nella configurazione è il carattere che ho scelto (uno personalizzato rispetto al carattere di sistema). Invece, tutti i caratteri vengono visualizzati nel filedispositivo e simulatore come font di sistema predefinito alla dimensione predefinita , indipendentemente dalla classe di dimensione (e ho verificato tramite il debugger che sta sostituendo il font di sistema con quello effettivo specificato nello storyboard). Quindi, in pratica, la funzione della classe di dimensione sembra essere interrotta per i caratteri personalizzati. Inoltre, è interessante notare che i caratteri personalizzati effettivamente visualizzano e regolano correttamente le dimensioni nel riquadro "Anteprima" di XCode 6 per il controller di visualizzazione: smette di funzionare solo quando viene eseguito sul sistema iOS effettivo (il che mi fa pensare che lo sto configurando correttamente) .
Ho provato più caratteri personalizzati diversi, e non sembra funzionare per nessuno di essi, ma funziona sempre se uso invece "Sistema".
Ad ogni modo, qualcun altro ha visto questo problema in Xcode 6 ?
Qualche idea sul fatto che si tratti di un bug in iOS 8, Xcode o qualcosa del genere
Sto sbagliando?
L'unica soluzione alternativa che ho trovato, come ho detto, è continuare a impostare i caratteri a livello di codice come sono stato per circa tre versioni di iOS perché funziona.
Ma mi piacerebbe poter usare questa funzione se potessi farlo funzionare con caratteri personalizzati. L'uso del carattere di sistema non è accettabile per il nostro design.
INFORMAZIONI AGGIUNTIVE: A partire da Xcode 8.0, il bug è stato risolto.