2015-08-26 10 views
5

Sto cercando un modo per formattare il testo di alertBody di UILocalNotification. Ho notato che ad esempio l'app di posta imposta la prima riga da Subject e la seconda e la terza riga sono l'anteprima del corpo dell'e-mail. Se il soggetto è più lungo di 1 riga, viene troncato. Funziona correttamente con il carattere dinamico, quindi non importa quale sia la dimensione del testo impostata in accessibilità. Ho provato a fare lo stesso risultato, ma senza successo.Formato testo di UILocalNotification.alertBody

Quello che ho cercato

  1. stringa di troncatura a lunghezza specifica
  2. Come formato stringa con sizeWithAttributes mentre usando preferedFontForTextStyle

Tutte queste soluzioni parzialmente funzionano, ma per un certo formato testo/dispositivo sicuro

Quello che sto cercando è un approccio per ottenere il nome del font di notifica della schermata di blocco, dimensioni, crenatura o qualsiasi altro parametro necessario per impostare correttamente UILocalNotification.alertBody come una sola riga di testo su qualsiasi dispositivo iOS con qualsiasi impostazione di accessibilità per le dimensioni del testo.

Sono consapevole che queste proprietà potrebbero essere diverse per la diversa versione di iOS, ma iOS8 è sufficiente per me.

Grazie

+0

Grazie per il riconoscimento e dispiace per la risposta negativa: anche se non è quello che si può avere sperato, sembra che le notifiche locali e remoti sono nello stesso involucro, e che il sistema operativo non ti dà un gancio al momento della visualizzazione. È un po 'comprensibile, dal momento che un'app per la formattazione di una notifica significherebbe che quell'app sia in esecuzione e, naturalmente, è possibile riceverla mentre non è stata avviata. – SwiftArchitect

risposta

3

Lasciate che il sistema operativo fare il layout

Il più vicino che si sta per arrivare è una supposizione. È possibile utilizzare

"\n" 

per imporre un ritorno a capo, ma non si sa per certo quando utilizzarlo.

Non esiste un supporto iOS che consenta di indicare, in anticipo, qual è la dimensione o l'orientamento dello schermo in cui arriverà la notifica.

si è di fronte la bandiera:

banner non vengono visualizzati localNotification.alertTitle

2 notification banners, portrait and landscape

Poi su contro il tempo, per così dire:

di creare notifiche in anticipo. Il fatto che siano locali non è un motivo per sapere cosa ci riserverà il futuro: per quanto ne sai, potresti essere programmato per 1 mese da ora e l'utente potrebbe aver aggiornato il sistema operativo, causando l'applicazione di nuovi caratteri o vincoli di layout.

In altre parole, la risposta a questa domanda è: è necessario lavorare per Apple Computer e ottenere un callback locale prima viene visualizzata la notifica, che è, alla data, non è un'opzione..

Notification Center


Conclusione

Uso brevealertTitle, brevealertBody, eventualmente spruzzato qua e là con \n forzare nuove linee.

// Use '\n' to force newline 
localNotification.alertBody = "Alert fired.\nWas set for ..." 
0

Mele applicazioni di posta elettronica prima linea è la proprietà alertTitle, recentemente introdotto> = iOS 8.2 2015/03/09See here.

Utilizzare questa proprietà per fornire una breve descrizione del motivo dell'avviso. È possibile specificare una stringa con il testo che si desidera visualizzare o specificare una stringa da utilizzare come chiave di ricerca nel file Localizable.strings dell'app. Il valore predefinito di questa proprietà è nullo.

Le stringhe del titolo devono essere brevi, in genere solo un paio di parole che descrivono il motivo della notifica. Apple Watch visualizza la stringa del titolo come parte dell'interfaccia di notifica a sguardo corto, che ha uno spazio limitato.

Per la seconda nota, tutte le stringhe della notifica alertBody vengono troncate, a seconda della lunghezza. La notifica mostra solo così tanti caratteri che completano l'altezza specifica UILocalNotification. Tuttavia, indipendentemente dalle dimensioni, se si preme sulla notifica, verranno visualizzati i caratteri rimanenti, a condizione che ce ne siano, proprio come l'applicazione di posta di Apple. È possibile abbreviare la alertBody usando qualunque method that works for you, ma per quanto riguarda la formattazione in termini di UIAppearance protocolli, non esiste un metodo approvato da Apple

+0

Grazie per la risposta, ma 'alertTitle' non è la prima riga del corpo di notifica della posta. Sostituisce il nome del testo dell'app se la notifica viene visualizzata nel centro notifiche, ma non è possibile visualizzarla nella schermata di blocco. Inoltre, per la seconda nota: so come troncare il 'alertBody', la domanda è come ottenere la lunghezza per adattarsi esattamente a una riga sulla schermata di blocco, perché i diversi dispositivi hanno dimensioni diverse e gli utenti possono impostare diverse dimensioni del testo – Petr

Problemi correlati