Uppdaterar din app för iOS 11

Vad du ska skapa

Utöver funktionen utvecklings- och buggfixar måste iOS-utvecklare hålla flikar på vad som meddelas årligen vid WWDC. Inom de anmärkningsvärda nya SDK: erna som annonseras finns det några förändringar som iOS devs måste röra ut för att hålla sina apps plattformskompatibla.

Med Swift att ha utvecklats till version 4, tillsammans med förbättringar och ändringar som kommer till iOS SDK själv måste utvecklare sifta genom förändringarna och utforma en strategi för att uppdatera sina kodbaser. Allt utan att bryta någon av sina befintliga funktioner och funktionaliteter! Allt kommer ner till prioritering för ditt projekt: Vad är det minsta du behöver göra för att göra din app iOS 11 kompatibel? Vad är det enklaste fallet du kan göra till din projektägare eller projektledare?

Viktiga funktioner kommer först och nästa kommer de trevliga men inte nödvändiga förbättringar som iOS 11 ger, från att optimera din applikation till den visuella estetiken som ytterligare berikar interaktionen och funktionaliteten i din app. Med detta i åtanke kommer denna handledning att vägleda dig genom stegen att vidta för att uppgradera din app, ta en pragmatisk inställning till nödvändiga och valfria förbättringar. 

Målen för denna handledning

Den här artikeln ger dig en översikt över de ändringar som kommer att krävas för att uppdatera din app för iOS 11, från arkitektoniska till visuella ändringar samt ändringar i App Store-publicering. Dessutom kommer denna handledning att organisera sektionerna med utgångspunkt från de nödvändiga ändringar som behövs och omfattningen och ansträngningen som krävs, till de trevliga men inte nödvändiga funktionerna som kommer att förbättra din app som ett resultat av iOS 11. 

I denna handledning kommer vi att täcka följande:

  • förbereder din app (och dig själv) för iOS 11
  • arkitektoniska förändringar
  • Utgivningsändringar för App Store
  • UI-ändringar

Förutsatt kunskap

Denna handledning förutsätter en mellanliggande kunskap om Swift eller Objective-C och Xcode, liksom förtrogenhet med kärnan iOS SDK (t ex UIKit och Core Foundation).

Arkitektoniska förändringar

Som med varje iteration av iOS är de viktigaste förändringarna vanligtvis de arkitektoniska. Med iOS 11 innebär det att migrera till Swift 4, så uppdatering av bygginställningarna för Xcode 9 kommer att bli den första uppgiften vi ska titta på. 

Incremental Migrating to Swift 4 

Viktigt | Nödvändig

För dem som var tvungna att migrera från Swift 2 till 3 förra året var processen väldigt smärtsam, och många förändringar bröt den befintliga kodbasen. Lyckligtvis går det inte att flytta från Swift 3,2 till 4, eftersom de flesta chanserna anses vara additiva, snarare än depresierande. Som ett resultat av detta utför Xcode 9 migreringsverktyget ett beundransvärt jobb för att överföra koden till den senaste Swift.

Dessutom, till skillnad från i tidigare versioner, kommer du inte att bli tvungen att göra uppgraderingen till 4 i taget. Det innebär att Xcode-projekt samtidigt stöder både Swift 4 och Swift 3.2, vilket innebär att du kan ha ett mål i ditt projekt kompilera under Swift 3.2 och en annan kompilera i Swift 4. Migreringsverktyget informerar dig om vilka klasser och funktioner den framgångsrikt migrerade , och vilka som kräver att manuell åtgärd löser sig i form av fel eller varningar. 

Felen innebär att du måste fixa något som inte är bakåtkompatibelt, medan många av varningarna kommer att indikera att det finns ett nytt sätt i Swift 4 att göra något, till exempel nya API-ändringar. Lossa felen och prioritera ovannämnda varningar som en separat uppgift. 

För att komma åt migreringsverktyget, gå till Redigera> Konvertera> Till Aktuell Swift Syntax i Xcode och följ anvisningarna, välj det eller de mål du vill migrera på det här steget. 

Migreringsverktyget får dig att lära dig det minsta arbetet du behöver göra för att kompilera din app och därför bör det inte förvånas att den rekommenderade bästa praxisen är att arbeta för att migrera din app från 3 till 4 stegvis, särskilt i stora projekt, testning och konvertering av mål efter mål. Du behöver inte migrera allt på en gång, och du kan planera din flyttväg i steg, var och när det behövs. 

Vi ska sedan snabbt titta på vad förändringarna är i Swift 4 som inte är obligatoriska att genomföra, men bra att veta. 

32-bitars arkitektonisk deprecation

Viktigt | Nödvändig

En annan viktig förändring i iOS 11 är att alla appar i App Store nu måste vara 64-bitars, eftersom 32-bitars apps inte längre stöds, och faktiskt fungerar inte ens på enheter som kör iOS 11. Detta bör inte komma som en överraskning eftersom Apple har länge varnat utvecklare, men om din app fortfarande inte har övergått kan du följa Apples riktlinjer för att konvertera din app till en 64-bitars binär.

Vad är nytt i Swift 4

Inte viktigt | Valfri

Utöver det obligatoriska arbete som krävs för att ditt mål ska bli Swift 4-kompatibelt, har du möjlighet att refactoring din befintliga kod för att utnyttja de nya Swift API-ändringarna, som är uppdelade enligt följande förbättringar på API-nivå:

strängar

String har fått mycket uppmärksamhet i Swift 4, med den mest anmärkningsvärda ändringen som en återgång till Swift 1.0 där strängar åter definieras som samlingar, så att du kan iterera över ett String-objekt tecken efter tecken (SE-0163) med hjälp av en för loop. Andra anmärkningsvärda ändringar i strängklassen inkluderar: 

  • SE-0168 Multi-Line String Literals
  • SE-0178 Lägg till unicodeScalars egendom till Karaktär
  • SE-0180 String Index Revision
  • SE-0182 String Newline Escaping
  • SE-0183 Substring prestanda affordances

samlingar

Ordböcker och uppsättningar, som en del av samlingar, har också blivit omformade i Swift 4, som börjar med att filtrera ordböcker, som hittills returnerat en uppsättning tuplar som består av nyckel / värdepar. För att komma åt ett visst element, skulle du använda följande prenumeration, som i en array:

listOfCars [4] .value

I Swift 4 får du tillbaka en ordlista istället, ger en mer konsekvent syntax, och därefter får du tillgång till den returnerade ordlistan som du skulle ha en vanlig ordlista. Detsamma gäller nu för Karta() funktion, där du också får tillbaka en ordlista. Nya abonnemang för ordlighetsåtkomst, du kan ange ett standardvärde om nyckeln inte existerar, vilket gör din kod säkrare.

låt tomTheCat = djur ["namn", standard: "id"]

Resten av ändringarna för samlingar inkluderar:

  • SE-0148 Generiska prenumerationer
  • SE-0154 Ge anpassade samlingar för ordlistor och värden
  • SE-0165 Ordbok & Satsförbättringar
  • SE-0172 Ensidiga områden
  • SE-0173 Lägg till MutableCollection.swapAt (_: _ :)

Andra anmärkningsvärda ändringar

Slutligen finns det några olika ändringar som är värda att notera som en del av den här utgåvan avseende språket: 

  • SE-0104 Protokollorienterade heltal
  • SE-0142 Tillåt där klausuler begränsar associerade typer
  • SE-0156 Klass och Subtyp existentials
  • SE-0160 Begränsa @objc inference
  • SE-0164 Ta bort slutligt stöd i protokollförlängningar
  • SE-0169 Förbättra interaktionen mellan privata förklaringar och förlängningar

Du hittar den uttömmande listan över ändringar och ursprungliga förslag på Swift.org.

App Store Publishing Changes

IOS 11-användare av App Store skulle redan ha märkt att det är en helt ny design med helt nya sektioner, vilket ger utvecklare nya sätt att marknadsföra sina appar och kommunicera med sina användare.

Vi börjar med att titta på den nya marknadsföringsikonen som du nu måste ladda upp med dina appuppdateringar.

Marknadsföringsikon

Obligatoriskt | Högre prioritet

IOS 11, för nya inlägg, om din app är ny eller en befintlig, måste du inkludera en ikon-1024.png-en 1024x1024 stor marknadsföringsikon. Bekvämt nog behöver du inte skicka in ikonen via iTunes Connect, men genom Xcode, byska Images.xcassets och lägger till bilden på rätt sätt, på samma sätt som du hanterar dina andra ikoner:

Marknadsföringsikonen används som en del av den nya App Store-designprocessen för att visa en större bildikon som representerar din app i avsnittet Idag eller andra avsnitt där appgrafiken är förstorad. 

Främja köp i appar

Valfritt | Lägre prioritet

Apple har gjort processen för inköp i app mer framträdande och transparent, så att användare kan se alla inköpsmöjligheter i appen direkt på samma nivå som appproduktdisplayen och faktiskt även inleda ett inköpsköp för app medan du laddar ned den faktiska appen. Tänk på en prenumerationsapp där användare som laddar ner din app kanske redan vill köpa deras prenumeration. iOS 11 gör det snabbare och bekvämare. 

Från och med iOS 11 kan utvecklare kunna marknadsföra upp till 20 inköp i app, till exempel abonnemang på appens produktsida. Dessa köpoptioner kommer också att visas i sökresultaten. 

Att främja inköp i app kan också uppmuntra nedladdningar av din app. När en användare inte har din app installerad men vill köpa ett marknadsfört köp i appen får de en uppmaning att ladda ner appen först. När appen har laddats ner fortsätter transaktionen i appen. (Äpple)

För att möjliggöra en ökad synlighet för köpannonsering i appen, måste du inkludera följande metadata i iTunes Connect: 

  • Bild: Det här är den unika PR-bilden som representerar ditt köp i app, som visas på din App Store-produktsida, i dag, Spel och Apps-flikar, liksom andra framträdande områden. Det här ska inte bestå av en skärmdump eller representera din apps ikon, men representerar snarare vad köpet i appen gör. Bilden ska också vara i PNG-format och hög kvalitet med dimensioner på 1024 x 1024.
  • Namn: Visningsnamnet för inköpet i app, bestående av högst 30 tecken. Detta borde vara specifikt, vilket motsvarar funktionen för det specifika köpet i appen. Om det är en prenumeration, säg så och se till att prenumerationens varaktighet ingår i titeln, till exempel "One Month All Access Access Subscription".
  • Beskrivning: 45 tecken långa, beskrivningar ger kontext för användarna att förstå och uppskatta fördelarna med ditt specifika in-app-erbjudande. 

Mer information om att marknadsföra ditt inköp i app finns i Apples officiella riktlinjer liksom Apples Riktlinjer för produktsidan.

Kommunicera med dina kunder

Valfritt | Lägre prioritet

Någonting som definitivt är lång tid, och Android-utvecklare har haft en ganska lång tid, är möjligheten att reagera direkt på användar kommentarer. Från och med iOS 11 kan utvecklare nu också direkt svara på användarnas recensioner och kommentarer. Medan det inte krävs några tekniska ändringar och deltagande är valfritt, utvecklare via iTunes Connect (App > Aktivitet > betyg) kan svara på beröm såväl som kritik.

Individualiserad utvecklaresvar kan utnyttjas för att bygga upp starkare och mer intima relationer, främja djupare engagemang, genom att visa att deras återkoppling granskas och svaras, och de frågor de tagit upp lyssnas aktivt. Om du vill svara på kommentarer går du enkelt till iTunes Connect där du kan visa feedbacken och svara individuellt. 

Förutom den nya utvecklarens kommentarfunktion har Apple också tillhandahållit en ny formaliserad SDK för att uppmana användare att betygsätta och granska appar. Den nya SKStoreReviewController bör användas i stället för tredje part eller manuellt uppmaning till användare för recensioner, eftersom Apple vill att operativsystemet ska kunna styra frekvensen av uppmaningarna såväl som deras visuella utseende. Apple kommer således att begränsa uppmaningar till högst tre gånger under en 365-dagarsperiod. 

Att genomföra SKStoreReviewController, Importera bara StoreKit och ringa requestReview () enligt nedanstående:

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

Medan Apple inte direkt har förbjudit de andra metoderna för att uppmana användarna till feedback, räknar med att detta ändras inom en snar framtid, så det är bäst att du börjar tänka på att implementera Apples snabbgranska motor nästa år.

Mer information finns i Apples riktlinjer för bedömningar, recensioner och svar. 

Incremental Rollouts

Valfritt | Lägre prioritet

En annan mycket användbar funktion som iOS 11 ger till utvecklare är möjligheten att släppa sina appar till användare stegvis. Apple kallar det här fasetet släppt och det är tänkt att minska risken för överbelastning av produktionsmiljön på en gång, istället rulla ut release-uppdateringarna över en sju dagarsperiod. 

Under Versionsfrisättning i iTunes Connect, heter ett nytt avsnitt Phased Release för automatiska uppdateringar, vilket ger dig möjlighet att antingen släppa omedelbart eller över sju dagar. Utvecklare kan också stoppa den fasade utrullningen i upp till 30 dagar, vilket normalt skulle hända om en stor fråga upptäcks och rapporteras.

Den fasade utrullningen hindrar inte användare från att hämta uppdateringen manuellt från App Store, men är snarare riktade mot användare som använder den automatiska hämtningsinställningen för iOS i App Store. 

Låt oss då ta en titt på de visuella förändringar som introducerades som en del av IOS 11, eftersom vi går igenom de viktiga såväl som de mindre viktiga ämnena. 

UI-ändringar

Efter att ha tittat på de arkitektoniska såväl som appbutikpubliceringsändringarna för iOS 11 är vi nu redo att dissekera de visuella förändringarna och hjälpa dig att prioritera vilka användargränssnitt som ska hanteras först. 

Det är viktigt att vi, trots att vi säkert kan bygga våra iOS-appar utan att genomföra några av ändringarna i det här avsnittet, adresserar endast de arkitektoniska och App Store-ändringarna, kanske först vill se till att din app visuellt stöder den nya iPhone X. Det innebär att ändringar i navigeringsstänger för att ta itu med det nya fysiska "haket" längst upp. 

Med det i åtanke kommer vi att titta på att uppdatera ditt användargränssnitt för iPhone X först och följt av några andra snabba ändringar som kommer att se till att din app visas modern och aktuell.

Uppdaterar ditt användargränssnitt för iPhone X

Obligatoriskt | Högre prioritet

En av de viktigaste uppgifterna i uppdateringen av din iOS-app är att se till att din app ser bra ut och fungerar snyggt på de nya enheterna, samtidigt som du inte bryter med ditt tidigare support. Därför har Apple jobbat mycket hårt för att ge utvecklare verktyg som Auto Layout för att designa för skärm-agnostiska layouter, vare sig det är iPhone 4, 5C eller 6 och 6 Plus. Från och med i år har vi nu en telefon som inte bara har nya dimensioner, men har också en fysisk hack på toppen. 

Lägg märke till att vi inte har en rektangulär viewport längre, och hur rekommenderar vi Apple att hantera det med den nya nyckeln på toppen för de fysiska sensorerna? För en sak vill Apple inte att du placerar svarta staplar på toppen för att gömma skåran! I stället förespråkar de för utvecklare att omfamna det.

Maskera inte eller uppmärksamma de viktigaste visningsfunktionerna. Försök inte att gömma enhetens rundade hörn, sensorhus eller indikator för att komma till startskärmen genom att placera svarta rader längst upp och längst ner på skärmen. Använd inte visuella utsmyckningar som fästen, inramningar, former eller instruktionstext för att uppmärksamma dessa områden. (IOS Human Interface Guidelines)

Du kommer att behöva designa för helskärmsupplevelse, utnyttja den nya enhetens bezel-less design, medan du inte döljer delar av ditt användargränssnitt med enhetens avrundade hörn eller sensorhus (hak). 

Den goda nyheten är Apples systemlevererade UI-element från UIKit som UINavigationBar anpassa sig redan och anpassa sig till de nya designkraven ur lådan. Men för alla anpassade användargränssnitt måste du göra överensstämmelsearbetet själv. 

Om du tittar på bilderna på iPhone 4.7 jämfört med den nya iPhone X ovan kommer du att märka hur statusfältet nu implementeras annorlunda, med början på dess höjd, som har ökat från den historiska 20 pt till 44 pt på iPhone X. 

Apple föreslår att apputvecklare som har gömt sina statusfält bör ompröva det beslutet i ljuset av iPhone X och bara gömma det i liggande läge, inte porträttläge. 

Använd slutligen guiderna för Säkert områdelayout genom att använda automatiska layouter som din primära åtgärd för att säkerställa att din app passar inom lämpliga marginaler, vilket garanterar inga visuella hinder, till exempel överlappar statusfältet eller navigeringsfältet.

Två utmärkta resurser som hjälper dig att komma igång med att designa för iPhone X är följande WWDC-videoklipp:

  • Design för iPhone X - Fall 2017 - Videor - Apple Developer
  • Bygga Apps för iPhone X - Fall 2017 - Videor - Apple Developer

Implementera Drag & Drop

Valfritt | Lägre prioritet

En av de mest talade om nya SDK: er vid årets WWDC är dra och släpp. Det här är någonting stationära användare har varit vana vid under mycket lång tid, men frånvaron i iOS-plattformen innebar att iPad och iPhone aldrig någonsin har tagit på sig multi-tasking. I IOS 11 har detta ändrats, eftersom den nya IOS-enheten kommer att stödja användargränssnittet som dras inte bara inom samma skärm men från en applikation till en annan. 

Använda IOS multi-touch-motor kan användare enkelt flytta innehållet på ett naturligt sätt mellan appar på iPad (eller bara inom samma skärm på iPhone) genom att trycka på och hålla på en bild, fil, text eller ett specifikt gränssnitt för att dra Det. Detta är redan integrerat över hela systemet i IOS, vilket gör det möjligt för användare att till exempel dra text från Safari till dockningsansökan för att skapa en ny påminnelse. 

Detta har inte blivit flaggat som obligatoriskt för genomförandet, men eftersom det snabbt kommer att bli ett förväntat beteende på grund av dess prevalens hela systemet föreslås det att du försöker prioritera detta snarare än senare så att du kan göra din apps UX överensstämmer med det nya standardsystemet UX-beteende. 

UIKit kommer med en viss drag och släpp stöd inbyggd, för komponenter som UITables och UICollectionViews, men du måste överbrygga och anpassa elementen med kod så att andra komponenter kan ta emot den slagna komponenten. Det här kan vara lite inblandat och det ligger utanför ramen för den här artikeln, men jag täcker dra och släpp supporten mer fullständigt i en uppföljnings post nästa vecka. 

För tillfället, du skulle lägga till och stödja dra och släpp i din ViewController's viewDidLoad () metod genom att genomföra de två delegater som visas nedan:

klass ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITableViewDropDelegate, UITableViewDragDelegate ... func viewDidLoad () ... firstTableView.dragDelegate = self // Du associerar dragen delegat till den här tabellen secondTableView.dropDelegate = self // Du associerar drop delegaten till den här tabellen firstTableView.dropDelegate = self secondTableView.dragDelegate = self firstTableView.dragInteractionEnabled = true secondTableView.dragInteractionEnabled = true ... ... func tableView (_ tableView: UITableView, itemsForBeginning session: UIDragSession, på indexPath: IndexPath) -> [UIDragItem] // 1) Drag startas func tableView (_ tableView: UITableView, performDropWith koordinator: UITableViewDropCoordinator) // (2) Drop är igång

Håll dig uppdaterad för vår kommande artikel om hur du lägger till Dra och släpp support till din iOS 11 app. 

Andra UIKit & Auto Layout ändringar

Valfritt | Lägre prioritet

Slutligen, låt oss ta en titt på de återstående UIKit ändras nya till iOS 11, från och med UINavigationBar, vilket har några anmärkningsvärda förbättringar, inklusive integrationen av SearchViewController och stora titlar. Vi tar en titt på förbättringarna till UITableView, från de nya och förbättrade swipe-åtgärderna för att tabellvisa celler automatiskt självstorleks. 

Navigering 

Vi har redan rört på navigeringsfält tidigare när vi diskuterar iPhone X och hur den anpassas till de nya statusfältets dimensioner. Förutom att den nya moderna designstilen som förespråkas i iOS innehåller nya större titlar i navigeringsfält, först sett i Apple Music App i iOS 10 och sedan dess ett etablerat designmönster över alla andra systemapp i iOS. 

Den större texttexten ger större tonvikt på skärmens sammanhang i en navigeringsfält och hjälper orientera användarna till den aktiva fliken medan du navigerar genom de olika flikarna. Storleken på titeltexten är inte statisk men krymper snarare när användaren rullar ner, återgår till pre-iOS 11-stilen. Om inte, när du drar ner i en rullningsvy, ökar titeltexten något. 

Använd en stor titel när du behöver lägga extra tonvikt på sammanhanget. I vissa appar kan den stora fetstil av en stor titel hjälpa orientera människor när de bläddrar och söker. I en tabbad layout kan till exempel stora titlar hjälpa till att klargöra den aktiva fliken och informera användaren när de har blivit rullade till toppen. Telefonen använder den här metoden, medan musik använder stora titlar för att differentiera innehållsområden som album, artister, spellistor och radio. En stor titelövergång till en standardtitel när användaren börjar rulla innehåll. Stora titlar är inte vettiga i alla appar och borde aldrig konkurrera med innehåll. Även om appen Klocka har en fliklayout, är stora titlar onödiga eftersom varje flik har en tydlig, igenkännbar layout. (IOS Human Interface Guidelines))

Som utvecklare är det upp till dig att bestämma om och när du ska implementera den stora textstilen, baserad på Apples riktlinjer för mänskliga gränssnitt, och Apple rekommenderar att du specifikt använder de stora texttitlarna endast för överordnade navigationsskärmar i stället för över alla nivåer. För att aktivera stor text, lägg till följande egenskap till din UINavigationController:

navigationController? .navigationBar.prefersLargeTitles = true

Hierarkiskt kommer både huvud- och detaljvisningskontrollerna under navigeringsfältet att ha det stora textläget aktiverat som standard på grund av förälderarvet, och som just nämnts är det lämpligt att endast de överordnade navigationsskärmarna implementerar det stora textläget. För att undertrycka den stora textarvet i din detaljskärm, gå till din vyskontroller och lägg till följande till initieraren (den måste ställas in vid initialiseringstid):

krävs init? (kodare aDecoder: NSCoder) super.init (kodare: aDecoder) navigationItem.largeTitleDisplayMode = .never

De largeTitleDisplayMode ovan är inställd på .aldrig. Utan den linjen är standardvärdet .automatisk, vilket är där detaljvystyrenheten ärverver egenskaperna hos dess föräldravisningsregulator.

Sök Visa Controllers

Sök kan nu integreras direkt i navigeringsfält utan att behöva associera UISearchViewController Instans med ämnesvisningskontrollen (och dess tabellhuvudvisning) separat. Med iOS 11 kan du enkelt bädda in sökfältet i navigeringsfältet:

navigationItem.searchController = UISearchController (searchResultsController: nil)

Du måste också överensstämma med UISearchResultsUpdating att reagera på söktermer, förstås. Medan iOS automatiskt döljer sökfältet baserat på antalet rader i tabellvyn kan du tvinga sökfältet att synas hela tiden genom att växla:

navigationItem.hidesSearchBarWhenScrolling = false

UITableViews

Slutligen tar vi en titt på två nya och framstående funktioner presenterade för UITableViews från iOS 11: självstorleksanpassning och förbättrade svepande åtgärder. Självstorleksanpassning infördes långt tillbaka i IOS 8 för att lindra bördan hos utvecklare att manuellt ställa in tabellvynceller, med förmågan att dynamiskt dimensionera cellerna för att passa innehållet i raden med hjälp av Auto Layout. Hittills måste du uttryckligen begära automatisk limning med:

tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = 100

Som i IOS 11 är den på och ställs som standard utan extra kod, men du har fortfarande möjlighet att specificera din egen radhöjd uttryckligen, efter behov. iOS 11 har också medfört nya ledande och efterföljande svepåtgärder, som är vanliga i många systemprogram, som Apples egen Mail app. 

Förutom att kunna svepa antingen vänster eller höger kan du också bifoga bilder för att associera med dessa åtgärder. Du genomför två delegerade metoder som en del av UIContextualAction, för ledande och efterföljande svepande åtgärder:

åsidosätta func tableView (_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? let trash = UIContextualAction (stil: .ormal, titel: "Ta bort") action, view, completionHandler in print ("Ta bort") completionHandler (true) delete.backgroundColor = UIColor.red delete.image = UIImage "delete") låt actionGroup = UISwipeActionsConfiguration (actions: [delete]) actionGroup.performsFirstActionWithFullSwipe = falsk returrättGrupp ... överträffa func tableView (_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? let archive = UIContextualAction (stil: .ormal, titel: "Arkiv") action, view, completionHandler in print ("Read") completionHandler (true) archive.backgroundColor = blue archive.image = UIImage ") flytta = UIContextualAction (stil:. normal, titel:" Flytta ") action, view, completionHandler i tryck (" Flytta ") completionHandler (true) move.backgroundColor = lila move.image = UIImage flytta ") låt actionGroup = UISwipeActionsConfiguration (handlingar: [arkiv, flytta]) actionGroup.performsFirstActionWithFullSwipe = false return actionGroup

Med hjälp av koden ovan kan du skapa mer än en kontextuell åtgärd och lägga till den i UISwipeActionsConfiguration gruppera exempel, för mer än en åtgärd. Det här är en enkel men engagerande förbättring för att ge större elasticitet till dina tabellvyer, med minimala kodändringar, och medan det inte är obligatoriskt, är det värt att fördela några timmar till det i din sprintplan. 

Slutsats

I det här inlägget har jag gett dig en översikt över förändringarna i arkitekturen, App Store och visuella komponenter i IOS 11, som ger dig en uppfattning om vad du behöver vidta omedelbart och vad som kan skjutas upp till ett senare tid. Migration till iOS 11 och Swift 4 kommer att bli mycket enklare än det var i tidigare års uppdateringar.

Utöver de överhängande förändringarna som behöver göras, har vi också gått igenom Swift 4-ändringarna som förbättrar strängar och samlingar, liksom de visuella förbättringarna till UITableView och sökkontrollen. Detta borde göra det enklare för dig att planera ditt arbete för att göra uppdateringar till din app!

Håll dig klar för mitt kommande inlägg om att implementera dra och släpp för dina iOS 11-appar och, under tiden, kolla in några av våra andra inlägg om nya ändringar i iOS och Swift!