Aggiornamento dell'app per iOS 11

Cosa starai creando

Oltre allo sviluppo di funzionalità e correzioni di bug, gli sviluppatori iOS devono tenere d'occhio ciò che viene annunciato annualmente al WWDC. Tra i nuovi importanti SDK annunciati, ci sono alcune modifiche che gli sviluppatori iOS dovranno implementare per mantenere le loro app compatibili con la piattaforma.

Con Swift che si è evoluto alla versione 4, insieme ai miglioramenti e alle modifiche apportate all'SDK di iOS, gli sviluppatori devono vagliare i cambiamenti e ideare una strategia per l'aggiornamento delle loro basi di codice. Tutto senza rompere nessuna delle funzionalità e funzionalità esistenti! Tutto dipende dalla priorità del tuo progetto: qual è il minimo che devi fare per rendere la tua app iOS 11 compatibile? Qual è il caso più semplice che puoi fare al tuo stakeholder o project manager del progetto?

Le funzionalità vitali vengono prima di tutto, e in seguito arrivano i miglioramenti gradevoli ma non obbligatori apportati da iOS 11, dall'ottimizzazione dell'applicazione all'estetica visiva che arricchirà ulteriormente l'interazione e la funzionalità della tua app. Con questo in mente, questo tutorial ti guiderà attraverso i passaggi da eseguire per aggiornare la tua app, adottando un approccio pragmatico ai miglioramenti obbligatori e facoltativi. 

Obiettivi di questo tutorial

Questo articolo ti fornirà una panoramica delle modifiche che saranno necessarie per aggiornare la tua app per iOS 11, dalle modifiche architettoniche a quelle visive e alle modifiche alla pubblicazione su App Store. Inoltre, questo tutorial organizzerà le sezioni partendo dalle necessarie modifiche necessarie e dall'ambito e dallo sforzo richiesti, alle funzionalità gradevoli ma non necessarie che miglioreranno la tua app come risultato di iOS 11. 

In questo tutorial ci occuperemo di quanto segue:

  • preparare la tua app (e te stesso) per iOS 11
  • cambiamenti architettonici
  • Modifiche alla pubblicazione di App Store
  • L'interfaccia utente cambia

Conoscenza presunta

Questo tutorial presuppone una conoscenza intermedia di Swift o Objective-C e Xcode, oltre alla familiarità con gli SDK iOS principali (ad esempio UIKit e Core Foundation).

Modifiche architettoniche

Come per ogni iterazione di iOS, i cambiamenti più importanti di solito sono quelli architettonici. Con iOS 11, ciò comporta la migrazione a Swift 4, quindi l'aggiornamento delle impostazioni di build per Xcode 9 sarà il primo compito che esamineremo. 

Migrazione incrementale a Swift 4 

Importante | necessario

Per coloro che hanno dovuto migrare da Swift 2 a 3 l'anno scorso, questo processo è stato estremamente doloroso e molte modifiche hanno infranto la base di codice esistente. Per fortuna, non è il caso di passare da Swift 3.2 a 4, poiché la maggior parte delle probabilità sono considerate additive, piuttosto che deprecating, e come risultato lo strumento di migrazione Xcode 9 esegue un lavoro ammirevole di transizione del codice all'ultima Swift.

Inoltre, a differenza delle versioni precedenti, non sarai obbligato a eseguire l'aggiornamento a 4 in una volta. Cioè, i progetti Xcode supportano simultaneamente sia Swift 4 che Swift 3.2, il che significa che puoi avere un obiettivo nella compilazione del tuo progetto con Swift 3.2 e un altro in Swift 4. Lo strumento di migrazione ti consente di sapere quali classi e funzioni sono migrate con successo e quali richiedono l'intervento manuale da risolvere, sotto forma di errori o avvertenze. 

Gli errori significano che dovrai correggere qualcosa che non è compatibile con le versioni precedenti, mentre molti degli avvisi indicheranno che c'è un nuovo modo in Swift 4 di fare qualcosa, come le nuove modifiche API. Correggere gli errori e assegnare la priorità agli avvisi di cui sopra come attività separata. 

Per accedere allo strumento di migrazione, vai a Modifica> Converti> alla sintassi Swift attuale in Xcode, e seguire le istruzioni, selezionando il target (s) che si desidera migrare in questa fase. 

Lo strumento di migrazione ti consente di conoscere il lavoro minimo che dovrai svolgere per ricompilare la tua app, pertanto non dovrebbe sorprendere che la best practice consigliata sia quella di eseguire la migrazione della tua app da 3 a 4 in modo incrementale, in particolare in progetti di grandi dimensioni, testare e convertire target per target. Non dovrai migrare tutto in una volta e puoi pianificare il tuo percorso di migrazione in fasi, dove e quando necessario. 

Dopodiché daremo una rapida occhiata a quali sono i cambiamenti in Swift 4 che non sono obbligatori da implementare, ma buoni a sapersi. 

Decrittazione architettonica a 32 bit

Importante | necessario

Un altro importante cambiamento in iOS 11 è che tutte le app nell'App Store ora devono essere a 64 bit, poiché le app a 32 bit non sono più supportate e, di fatto, non funzionano nemmeno sui dispositivi con iOS 11. non dovrebbe sorprendere visto che Apple ha messo in guardia gli sviluppatori da un po 'di tempo, ma nel caso in cui la tua app non abbia ancora effettuato la transizione, puoi seguire le linee guida di Apple sulla conversione della tua app in un binario a 64 bit.

Novità di Swift 4

Non importante | Opzionale

Oltre al lavoro obbligatorio necessario per far diventare il tuo obiettivo conforme a Swift 4, hai la possibilità di refactoring del tuo codice esistente per sfruttare le nuove modifiche di Swift API, che sono suddivise secondo i seguenti miglioramenti a livello di API:

stringhe

String ha ricevuto molta attenzione in Swift 4, con il cambiamento più importante essendo un ritorno a Swift 1.0 dove le stringhe sono ancora una volta definite come raccolte, quindi puoi scorrere su un oggetto String carattere per carattere (SE-0163) usando un per ciclo. Altre importanti modifiche alla classe Strings includono: 

  • SE-0168 Letterali a stringa multi-linea
  • SE-0178 Aggiungi unicodeScalars proprietà a Personaggio
  • Revisione dell'indice delle corde SE-0180
  • SE-0182 String Newline Escaping
  • SE-0183 Prestazioni relative alle sottostringhe

collezioni

Dizionari e set, come parte delle collezioni, sono stati rinnovati anche in Swift 4, a partire dal filtraggio dei dizionari, che fino ad ora ha restituito una serie di tuple costituite da coppie chiave / valore. Per accedere a un elemento specifico, si utilizzerà il seguente indice, come in un array:

listOfCars [4] .value

In Swift 4, si ottiene invece un dizionario, che fornisce una sintassi più coerente e, successivamente, si accede al dizionario restituito come si farebbe con un normale dizionario. Lo stesso ora si verifica per il carta geografica() funzione, dove si ottiene anche un dizionario. Nuovo per gli abbonati di accesso al dizionario, puoi fornire un valore predefinito nel caso in cui la chiave non esista, rendendo il tuo codice più sicuro.

let tomTheCat = animal ["nome", default: "id"]

Il resto delle modifiche per le raccolte include:

  • SE-0148 Sottoscrittivi generici
  • SE-0154 Fornire raccolte personalizzate per chiavi e valori del dizionario
  • SE-0165 Dizionario e imposta miglioramenti
  • SE-0172 Gamme unilaterali
  • SE-0173 Aggiungi MutableCollection.swapAt (_: _ :)

Altre modifiche importanti

Infine, ci sono alcune modifiche varie che vale la pena notare come parte di questa release relativa alla lingua: 

  • SE-0104 Numeri interi orientati al protocollo
  • SE-0142 Permesso in cui clausole per vincolare i tipi associati
  • Esistenziali di classe e sottotipo SE-0156
  • SE-0160 Limitazione dell'inferenza @objc
  • SE-0164 Rimuovere il supporto finale nelle estensioni del protocollo
  • SE-0169 Migliora l'interazione tra dichiarazioni ed estensioni private

Puoi trovare l'elenco completo delle modifiche e delle proposte originali a Swift.org.

Modifiche alla pubblicazione di App Store

Gli utenti di iOS 11 dell'App Store avrebbero già notato che sta sfoggiando un design completamente nuovo con sezioni completamente nuove, offrendo agli sviluppatori nuovi modi in cui possono promuovere le loro app e comunicare con i propri utenti.

Inizieremo dando un'occhiata alla nuova icona di marketing che dovrai caricare con gli aggiornamenti dell'app.

Icona di marketing

Obbligatorio | Priorità più alta

A partire da iOS 11, per qualsiasi nuovo invio, se la tua app è nuova o esistente, dovrai includere un icona-1024.png-un'icona di marketing di dimensioni 1024x1024. Abbastanza convenientemente, non sarà necessario inviare l'icona tramite iTunes Connect, ma tramite Xcode, daandando a Images.xcassets e aggiungendo l'immagine di dimensioni appropriate, allo stesso modo in cui gestisci le altre icone:

L'icona di marketing viene utilizzata come parte del nuovo processo di progettazione dell'App Store, per mostrare un'icona dell'immagine più grande che rappresenta la tua app nella sezione Oggi o altre sezioni in cui l'immagine dell'app viene ingrandita. 

Promozione degli acquisti in-app

Opzionale | Priorità inferiore

Apple ha reso più evidente e trasparente il processo degli acquisti in-app, consentendo agli utenti di visualizzare tutte le opzioni di acquisto in-app direttamente allo stesso livello della visualizzazione del prodotto dell'app e, di fatto, anche di avviare un acquisto in-app per app mentre scarica l'app vera e propria. Pensa a un'app in abbonamento in cui gli utenti che scaricano la tua app potrebbero già voler acquistare l'abbonamento. iOS 11 rende questo più veloce e più conveniente. 

A partire da iOS 11, gli sviluppatori sono in grado di promuovere fino a 20 acquisti in-app, come gli abbonamenti sulla pagina dei prodotti della propria app. Queste opzioni di acquisto appariranno anche nei risultati di ricerca. 

La promozione degli acquisti in-app può anche incoraggiare i download della tua app. Quando un utente non ha installato la tua app ma desidera acquistare un acquisto in-app promosso, riceverà prima una richiesta di download dell'app. Una volta scaricata l'app, la transazione continuerà nell'app. (Mela)

Per consentire una maggiore visibilità della promozione degli acquisti in-app, in iTunes Connect dovrai includere i seguenti metadati: 

  • Immagine: Questa è l'immagine promozionale unica che rappresenta il tuo acquisto in-app, che viene visualizzata nella pagina del tuo prodotto App Store, nelle schede Oggi, Giochi e App, oltre che in altre aree importanti. Questo non dovrebbe consistere in uno screenshot o rappresentare l'icona della tua app, ma piuttosto rappresentare ciò che fa l'acquisto in-app. L'immagine dovrebbe anche essere in formato PNG e di alta qualità con dimensioni di 1024 x 1024.
  • Nome: Il nome visualizzato dell'acquisto in-app, composto da un massimo di 30 caratteri. Questo dovrebbe essere specifico, che si addice alla funzione di quello specifico acquisto in-app. Se si tratta di un abbonamento, dillo e assicurati che la durata dell'abbonamento sia inclusa nel titolo, ad esempio "Abbonamento illimitato per un mese".
  • Descrizione: Caratterizzato da 45 caratteri, le descrizioni forniscono agli utenti il ​​contesto per comprendere e apprezzare i vantaggi della specifica offerta in-app. 

Per ulteriori informazioni sulla promozione dell'acquisto in-app, fare riferimento a Linee guida ufficiali di Apple così come Apple Linee guida della pagina del prodotto.

Comunicare con i tuoi clienti

Opzionale | Priorità inferiore

Qualcosa che è sicuramente da tempo in ritardo, e gli sviluppatori Android hanno goduto per un po 'di tempo, è la capacità di rispondere direttamente ai commenti degli utenti. A partire da iOS 11, ora gli sviluppatori possono anche rispondere direttamente alle recensioni e ai commenti dei propri utenti. Anche se questo non richiede modifiche tecniche e la partecipazione è facoltativa, gli sviluppatori tramite iTunes Connect (App > Attività > Giudizi) può rispondere a lodi e critiche.

Le risposte sviluppate individualizzate possono essere sfruttate al fine di costruire relazioni più forti e più intime, promuovendo un coinvolgimento più profondo, mostrando che il loro feedback è in fase di revisione e di risposta, e le questioni sollevate vengono attivamente ascoltate. Per rispondere ai commenti, basta andare su iTunes Connect dove è possibile visualizzare il feedback e rispondere individualmente. 

Oltre alla nuova funzionalità per i commenti degli sviluppatori, Apple ha anche fornito un nuovo SDK formalizzato per richiedere agli utenti di valutare e recensire le app. Il nuovo SKStoreReviewController dovrebbe essere usato al posto di qualsiasi terza parte o manuale di richiesta degli utenti per le recensioni, perché Apple vuole che il sistema operativo sia in grado di controllare la frequenza dei prompt e il loro aspetto visivo. Apple pertanto vincolerà i prompt a non più di tre volte in un periodo di 365 giorni. 

Implementare SKStoreReviewController, semplicemente importa StoreKit e chiama requestReview () come mostrato di seguito:

... import StoreKit ... SKStoreReviewController.requestReview () ... 

Mentre Apple non ha vietato apertamente gli altri metodi di sollecitare gli utenti a ricevere feedback, ci aspettiamo che questo cambi nel prossimo futuro, quindi è meglio che tu inizi a pensare di implementare il motore di richiesta di revisione di Apple nel prossimo anno.

Fare riferimento alle linee guida su Valutazioni, recensioni e risposte di Apple per ulteriori informazioni. 

Implementazioni incrementali

Opzionale | Priorità inferiore

Un'altra funzionalità molto utile che iOS 11 offre agli sviluppatori è la possibilità di rilasciare le loro app agli utenti in modo incrementale. Apple chiama questo rilascio graduale e ha lo scopo di ridurre il rischio di sovraccaricare l'ambiente di produzione tutto in una volta, invece di distribuire gli aggiornamenti del rilascio in un periodo di sette giorni. 

Sotto Versione Rilasciata in iTunes Connect, c'è una nuova sezione chiamata Rilascio a fasi per aggiornamenti automatici, che ti dà la possibilità di rilasciare immediatamente o nel periodo di sette giorni. Gli sviluppatori sono inoltre in grado di interrompere il roll out progressivo per un massimo di 30 giorni, cosa che normalmente si verifica se viene rilevato un problema importante e segnalato.

Il roll out progressivo non impedisce agli utenti di scaricare manualmente l'aggiornamento dall'App Store, ma è rivolto agli utenti che utilizzano l'impostazione di download automatico iOS nell'App Store. 

Successivamente, diamo un'occhiata alle modifiche visive introdotte come parte di iOS 11, mentre affrontiamo gli argomenti importanti e quelli meno importanti. 

Modifiche all'interfaccia utente

Dopo aver esaminato le modifiche di architettura e di app store publishing per iOS 11, siamo ora pronti a analizzare le modifiche visive e aiutarti a stabilire la priorità delle modifiche all'interfaccia utente da affrontare prima. 

È importante sottolineare che, mentre certamente potremmo costruire le nostre app per iOS senza implementare nessuna delle modifiche in questa sezione, affrontando solo le modifiche architettoniche e App Store, è consigliabile assicurarsi che l'app supporti visivamente il nuovo iPhone X. Ciò significa che le modifiche al barre di navigazione per indirizzare la nuova "tacca" fisica nella parte superiore. 

Con questo in mente, esamineremo innanzitutto l'interfaccia utente per l'iPhone X, seguita da altre modifiche rapide che garantiranno che la tua app appaia moderna e aggiornata.

Aggiornamento della tua interfaccia utente per iPhone X

Obbligatorio | Priorità più alta

Uno dei compiti più importanti nell'aggiornamento della tua app iOS è garantire che l'app sia in buone condizioni e funzioni correttamente sui nuovi dispositivi, senza compromettere il supporto precedente. Ecco perché Apple ha lavorato molto duramente per fornire agli sviluppatori strumenti come Layout automatico per la progettazione di layout screen-agnostici, che si tratti di iPhone 4, 5C o 6 e 6 Plus. A partire da quest'anno, ora abbiamo un telefono che non solo ha nuove dimensioni, ma ha anche una tacca fisica nella parte superiore. 

Si noti che non abbiamo più una finestra rettangolare e, con la nuova tacca in alto per i sensori fisici, come consiglia Apple di occuparsene? Per prima cosa, Apple non vuole che tu metta delle barre nere in alto per nascondere la tacca! Invece, stanno sostenendo che gli sviluppatori lo accolgano.

Non mascherare o prestare particolare attenzione alle funzioni di visualizzazione principali. Non tentare di nascondere gli angoli arrotondati del dispositivo, l'alloggiamento del sensore o l'indicatore per accedere alla schermata Home posizionando barre nere nella parte superiore e inferiore dello schermo. Non utilizzare decorazioni visive come parentesi, cornici, forme o testi di istruzioni per richiamare l'attenzione su queste aree. (Linee guida per l'interfaccia umana iOS)

Dovrai progettare per l'esperienza a schermo intero, sfruttando il design senza cornice del nuovo dispositivo senza oscurare parti dell'interfaccia utente con gli angoli arrotondati del dispositivo o l'alloggiamento del sensore (tacca). 

La buona notizia è che gli elementi dell'interfaccia utente forniti da Apple forniti da UIKit come il UINavigationBar già conformi e adattarsi alle nuove esigenze di progettazione fuori dagli schemi. Tuttavia, per qualsiasi elemento dell'interfaccia utente personalizzata, è necessario eseguire autonomamente il lavoro di conformità. 

Guardando le immagini dell'iPhone 4.7 rispetto al nuovo iPhone X sopra, noterai come la barra di stato ora sia implementata in modo diverso, iniziando dalla sua altezza, che è cresciuta dallo storico 20 pt a 44 pt sull'iPhone X. 

Apple suggerisce che gli sviluppatori di app che hanno nascosto le loro barre di stato dovrebbero riconsiderare tale decisione alla luce di iPhone X e nasconderlo solo in modalità orizzontale, non in modalità verticale. 

Infine, utilizza le guide del layout dell'area sicura sfruttando i layout automatici come misura principale per garantire che la tua app rientri nei margini appropriati, garantendo l'assenza di ostacoli visivi, ad esempio la barra di stato o la barra di navigazione sottostanti.

Due eccellenti risorse per iniziare a progettare per l'iPhone X sono i seguenti video WWDC:

  • Progettazione per iPhone X - Autunno 2017 - Video - Sviluppatore Apple
  • Creazione di app per iPhone X - Autunno 2017 - Video - Sviluppatore Apple

Implementazione di Drag & Drop

Opzionale | Priorità inferiore

Uno dei nuovi SDK più chiacchierati al WWDC di quest'anno è il drag & drop. Questo è qualcosa a cui gli utenti del desktop sono abituati da molto tempo, ma la sua assenza nella piattaforma iOS ha significato che iPad e iPhone non hanno mai veramente abbracciato il multi-tasking. In iOS 11, questo è cambiato, in quanto il nuovo iOS supporterà gli elementi dell'interfaccia utente trascinati non solo all'interno della stessa schermata, ma da un'applicazione all'altra. 

Sfruttando il motore multi-touch di iOS, gli utenti possono spostare facilmente i contenuti in modo naturale tra le app sull'iPad (o semplicemente all'interno della stessa schermata dell'iPhone) toccando e trattenendo un'immagine, un file, un testo o un elemento specifico dell'interfaccia utente da trascinare esso. Questo è già integrato a livello di sistema in iOS, consentendo agli utenti di trascinare il testo da Safari nell'app Promemoria del dock per creare un nuovo promemoria. 

Questo non è stato contrassegnato come obbligatorio per l'implementazione, ma poiché diventerà rapidamente un comportamento previsto a causa della sua prevalenza a livello di sistema, si consiglia di provare a dare la priorità a questo prima piuttosto che dopo, in modo da poter rendere l'UX della tua app conforme al nuovo comportamento del sistema UX standard. 

UIKit viene fornito con un livello di supporto drag & drop integrato, per componenti come UITables e UICollectionViews, ma è necessario collegare e adattare gli elementi con il codice in modo che altri componenti possano ricevere il componente trascinato. Questo può essere in qualche modo coinvolto, ed è al di fuori dello scopo di questo articolo, ma tratterò il supporto drag & drop in modo più completo in un post di follow-up la prossima settimana. 

Per ora, in breve, aggiungerai e sosterrai il trascinamento nella tua ViewController'S viewDidLoad () metodo, implementando i due delegati indicati di seguito:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITableViewDropDelegate, UITableViewDragDelegate ... func viewDidLoad () ... firstTableView.dragDelegate = self // Associare il delegato di trascinamento a questa tabella secondTableView.dropDelegate = self // Associare il delegato di rilascio a questa tabella firstTableView.dropDelegate = self secondTableView.dragDelegate = self firstTableView.dragInteractionEnabled = true secondTableView.dragInteractionEnabled = true ... ... func tableView (_ tableView: UITableView, itemsForBeginning session: UIDragSession, all'indirizzo indexPath: IndexPath) -> [UIDragItem] // ( 1) Il trascinamento viene avviato func tableView (_ tableView: UITableView, performDropWith coordinator: UITableViewDropCoordinator) // (2) Drop viene avviato

Resta sintonizzato per il nostro prossimo articolo su come aggiungere il supporto per il trascinamento della selezione alla tua app iOS 11. 

Altre modifiche al layout UIKit e Auto

Opzionale | Priorità inferiore

Infine, diamo un'occhiata alle rimanenti modifiche di UIKit nuove a iOS 11, a partire da UINavigationBar, che ha alcuni miglioramenti notevoli, tra cui l'integrazione di SearchViewController e titoli grandi. Diamo quindi uno sguardo ai miglioramenti di UITableView, dalle nuove e migliorate azioni di scorrimento per visualizzare automaticamente le celle di visualizzazione automaticamente. 

Navigazione 

Abbiamo già toccato le barre di navigazione in precedenza quando discutiamo dell'iPhone X e in che modo si allinea con le nuove dimensioni della barra di stato. Oltre a questo, il nuovo stile di design contemporaneo promosso in iOS include nuovi titoli più grandi nelle barre di navigazione, visti per la prima volta nell'app Apple Music in iOS 10 e da allora uno schema di progettazione consolidato in tutte le altre app di sistema in iOS. 

Il testo del titolo più ampio fornisce una maggiore enfasi sul contesto dello schermo in una barra di navigazione e aiuta ad orientare gli utenti sulla scheda attiva durante la navigazione tra le varie schede. La dimensione del testo del titolo non è statica, ma diminuisce man mano che l'utente scorre verso il basso, tornando allo stile pre-iOS 11. Inversamente, quando si abbassa in una vista di scorrimento, il testo del titolo aumenterà leggermente. 

Utilizzare un titolo importante quando è necessario fornire un'enfasi aggiuntiva sul contesto. In alcune app, il testo grande e in grassetto di un grande titolo può aiutare ad orientare le persone mentre navigano e cercano. In un layout a schede, ad esempio, i titoli di grandi dimensioni possono aiutare a chiarire la scheda attiva e informare l'utente quando sono passati in alto. Il telefono utilizza questo approccio, mentre la musica utilizza titoli di grandi dimensioni per differenziare aree di contenuto come album, artisti, playlist e radio. Un titolo di grandi dimensioni passa a un titolo standard mentre l'utente inizia a scorrere il contenuto. I grandi titoli non hanno senso in tutte le app e non dovrebbero mai competere con i contenuti. Sebbene l'app Orologio abbia un layout a schede, i titoli di grandi dimensioni non sono necessari perché ogni scheda ha un layout distinto e riconoscibile. (Linee guida per l'interfaccia umana iOS))

Come sviluppatore, spetta a te decidere se e quando implementare lo stile di testo di grandi dimensioni, basato sulle linee guida di Human Human Interface, e Apple ti consiglia di utilizzare i titoli di testo di grandi dimensioni solo per gli schermi di navigazione di alto livello e non per tutti i livelli. Per abilitare un testo di grandi dimensioni, aggiungi semplicemente la seguente proprietà al tuo UINavigationController:

navigationController? .navigationBar.prefersLargeTitles = true

Dal punto di vista gerarchico, sia i controller di visualizzazione principale che di dettaglio sotto la barra di navigazione avranno la modalità di testo estesa abilitata per impostazione predefinita a causa dell'ereditarietà dei genitori e, come appena accennato, è consigliabile che solo le schermate di navigazione di primo livello implementino la modalità di testo di grandi dimensioni. Per sopprimere l'ereditarietà del testo di grandi dimensioni nella schermata dei dettagli, vai al tuo controller di visualizzazione e aggiungi quanto segue al suo inizializzatore (deve essere impostato al momento dell'inizializzazione):

init richiesto? (coder aDecoder: NSCoder) super.init (coder: aDecoder) navigationItem.largeTitleDisplayMode = .never

Il largeTitleDisplayMode sopra viene impostato su .mai. Senza quella linea, l'impostazione predefinita è .automatico, che è dove il controller della vista di dettaglio eredita le proprietà del suo controller di visualizzazione genitore.

Cerca Visualizza controller

La ricerca può ora essere integrata direttamente nelle barre di navigazione senza la necessità di associare il UISearchViewController istanza con il controller della vista soggetto (e la sua vista intestazione tabella) separatamente. A partire da iOS 11, puoi incorporare elegantemente la barra di ricerca nella barra di navigazione:

navigationItem.searchController = UISearchController (searchResultsController: nil)

Dovrai anche conformarti a UISearchResultsUpdating per reagire ai termini di ricerca, ovviamente. Mentre iOS nasconde automaticamente la barra di ricerca in base al numero di righe nella visualizzazione tabella, puoi forzare la barra di ricerca a essere visibile in qualsiasi momento attivando:

navigationItem.hidesSearchBarWhenScrolling = false

UITableViews

Infine, diamo uno sguardo a due nuove e distinte funzionalità introdotte UITableViews da iOS 11: ridimensionamento automatico e azioni di scorrimento ottimizzate. L'auto-dimensionamento è stato introdotto già da iOS 8 per alleviare il carico degli sviluppatori che devono dimensionare manualmente le celle di visualizzazione delle tabelle, con la possibilità di dimensionare dinamicamente le celle per adattarle al contenuto della riga utilizzando Auto Layout. Fino ad ora, dovevi richiedere esplicitamente il ridimensionamento automatico usando:

tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = 100

A partire da iOS 11, è attivo e impostato per impostazione predefinita senza codice aggiuntivo, ma è comunque possibile specificare l'altezza della riga in modo esplicito, in base alle esigenze. iOS 11 ha anche portato a nuove azioni di trascinamento in testa e in coda, prevalenti in molte app di sistema come l'app Mail di Apple. 

Oltre ad essere in grado di scorrere verso sinistra o verso destra, puoi anche allegare immagini da associare a queste azioni. Implementa due metodi delegati come parte del UIContextualAction, per le azioni di scorrimento in testa e in coda:

override func tableView (_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? let trash = UIContextualAction (style: .normal, title: "Delete") action, view, completionHandler in print ("Delete") completionHandler (true) delete.backgroundColor = UIColor.red delete.image = UIImage (denominato: "delete") let actionGroup = UISwipeActionsConfiguration (actions: [delete]) actionGroup.performsFirstActionWithFullSwipe = false return actionGroup ... override func tableView (_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? let archive = UIContextualAction (style: .normal, title: "Archive") action, view, completionHandler in print ("Read") completionHandler (true) archive.backgroundColor = blue archive.image = UIImage (denominato: "archive ") let move = UIContextualAction (style: .normal, title:" Move ") action, view, completionHandler in print (" Move ") completionHandler (true) move.backgroundColor = purple move.image = UIImage (denominato:" move ") let actionGroup = UISwipeActionsConfiguration (actions: [archive, move]) actionGroup.performsFirstActionWithFullSwipe = false return actionGroup

Usando il codice sopra, puoi creare più di un'azione contestuale e aggiungerla al UISwipeActionsConfiguration istanza di raggruppamento, per più di un'azione. Si tratta di un miglioramento semplice ma coinvolgente per conferire maggiore elasticità alle visualizzazioni della tabella, con modifiche minime del codice e, sebbene non sia obbligatorio, vale la pena dedicare alcune ore alla scheda di pianificazione sprint. 

Conclusione

In questo post, ti ho dato una panoramica delle modifiche apportate all'architettura, all'App Store e ai componenti visivi di iOS 11, che ti forniscono un'idea di ciò che dovrai agire immediatamente, e cosa può essere rinviato a un momento successivo tempo. La migrazione a iOS 11 e Swift 4 sarà molto più semplice di quanto non fosse negli aggiornamenti degli anni precedenti.

Oltre alle imminenti modifiche che devono essere apportate, abbiamo anche utilizzato le modifiche di Swift 4 che migliorano stringhe e raccolte, nonché i miglioramenti visivi a UITableView e Search Controller. Ciò dovrebbe rendere più facile per te pianificare il tuo lavoro per apportare aggiornamenti alla tua app!

Restate sintonizzati per il mio prossimo post sull'attuazione del trascinamento della selezione per le app iOS 11 e, nel frattempo, date un'occhiata ad alcuni dei nostri altri post sulle nuove modifiche a iOS e Swift!