iOS 9: En introduksjon til Multitasking på iPad

iOS 9: En introduksjon til Multitasking på iPad
47
Del
8
Del

Denne Cyber ​​Monday Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.

Innledning

Med iOS 9, introduserte Apple en rekke multitasking evner for iPad. Disse inkluderer Slide Over, Delt visning og Bilde i bilde. Hvis du ikke er kjent med disse nye funksjonene, her er en kort oversikt.

Slide Over

Skyv Over er tilgjengelig på iPad Mini 2 og senere, alle iPad Air-modeller, og iPad Pro. Det gir mulighet for apps å gli inn fra høyre side av skjermen med full høyde på skjermen (i begge retninger) og omtrentlig bredden av en iPhone-skjermen.

Bilde i bilde

Bilde i bilde er tilgjengelig på alle iPad modeller som støtter gli over. Det åpner for en video for å fortsette som spilles i en liten utsikten mens du arbeider med andre programmer på iPad. Denne lille visningen inneholder tre knapper for å styre avspilling, gå tilbake til full skjerm, play /pause, og nær. Utsikten kan bli endret eller midlertidig skjøvet ut til siden av skjermen.

Delt visning

Delt visning er tilgjengelig på iPad Mini 4, iPad Air 2 og iPad Pro. Den lar iPad å kjøre to fullt funksjonelle apps side om side. Brukeren kan flytte delelinjen mellom de to apps å endre størrelsen på dem.

Merk at appen til venstre er referert til som den primære søknaden og app på høyre sekundær
app. Den primære søknaden eier statuslinjen for enheten og alltid tar opp minst halvparten av skjermen. Den primære app kan bli avvist av brukeren, men hvis de flytter skillet helt til venstre.

Forutsetninger

Denne opplæringen forutsetter at du kjører Xcode 7 eller senere OS X Yosemite eller senere. Det forutsetter også at du har lært om størrelsesklasser og Auto Layout. Hvis du er ny på adaptive design, så jeg anbefaler å lese Jordan Morgan tutorial på adaptive design. Du må også laste ned starter prosjektet fra GitHub.

1. Skyv Over og Delt visning

Konfigurering

Som standard, alle apps som er laget fra noen Xcode 7 malen automatisk støtte gli over og Delt visning. Dette er fordi programmet er laget med en LaunchScreen.storyboard fil og en størrelsesklasse aktivert Main.storyboard fil.

For prosjekter som er opprettet med en tidligere versjon av Xcode, kan du aktivere Slide Over og Delt visning for programmet ved å ta følgende to trinn

Trinn 1

Lag en LaunchScreen.storyboard fil ved å velge iOS >.; Brukergrensesnitt > Lansere Screen mal. Lanseringen skjermen vises når appen er lansert fra startskjermen, og mens det er fortsatt lasting.

Merk at dette dreiebok erstatter de statiske lanserings bilder som du ville allerede har konfigurert for ditt bruksområde. Anmeldelser

Trinn 2

Sørg for at brukergrensesnittet bruker størrelse klasser og Auto Layout. Du kan kontrollere dette ved å velge dreieboken av prosjektet, åpner File Inspector, og tikker Bruk Auto Layout og
Bruk størrelsesklasser boksene i Interface Builder Document delen.

Merk at du må gjøre dette for hver dreiebok i prosjektet. Nå som du vet hvordan du konfigurerer en app riktig for Slide Over og Delt visning, er det på tide å lære om hvordan du kan sikre din app fungerer godt sammen med andre apps.

størrelsesklasser

For Slide Over , gjeldende størrelsesklasse for programmet når du kjører vil alltid være den samme. Når programmet er den primære applikasjonen vil den ha tilgang til full skjerm (vanlig bredde og høyde størrelsesklasse), og ingenting vil være annerledes. Når programmet er åpnet via lysbilde Over funksjonen, vil programmet ha en kompakt bredde og vanlig høyde størrelsesklasse uavhengig av legning.

På en iPad som støtter Delt visning, men appen vinduet kan endre størrelsen på helst og behov for å være utformet for å passe disse størrelsene. Diagrammet nedenfor viser de forskjellige konfigurasjoner for Split Se app størrelser og størrelsesklasser i forbindelse med disse .:
Kilde: Apples Vedta Multitasking Forbedringer på iPad: Skyv Over og Delt visning Hurtig Start

Som du kan se, med mindre din app er den primære søknaden og enheten er i liggende format, så snart må dele skjermen med en annen app app vil bli tvunget inn i en kompakt bredde størrelsesklasse. Fordi denne endringen i størrelse er avhengig av brukeren og kan skje når som helst, du app må være i stand til å glatt overgang mellom forskjellige visningsstørrelser.

Legg merke til at på iPad Pro, når i landskapet og 50/50 Split View-modus, er begge apps gitt en vanlig bredde horisontal størrelsesklasse som vist nedenfor.
Skjermbilde hentet fra Fullført opplæring for Application
tilbakeringing Metoder

For å ta høyde for disse endringer i størrelse, er i samsvar den UIViewController klassen til de to protokoller, UITraitEnvironment og UIContentContainer.

UITraitEnvironment

Denne protokollen inneholder en UITraitCollection egenskap kalt traitCollection og en metode for når denne egenskap samling endringer, traitCollectionDidChange ( _ :). Denne egenskap samling objekt lar deg finne ut spesifikke detaljer om den løpende tilstanden din app, som for eksempel displayet skala, aktuelle horisontale og vertikale størrelsesklasser, 3D touch (referert til som Force Touch av API) evne, og nåværende enhetstype (iPhone /iPod Touch, iPad, Apple TV eller Uspesifisert).

UIContentContainer

Denne protokollen inneholder en preferredContentSize eiendom samt en rekke metoder for når størrelsen eller egenskap samling endringer for den nåværende container . Vi vil ta en nærmere titt på to av metodene som er definert av UIContentContainer protokollen.

Åpne starter prosjektet du lastet ned fra GitHub og naviger til ViewController.swift. Deretter legger du til følgende metoder til klassen definisjon:
styre func viewWillTransitionToSize (størrelse: CGSize, withTransitionCoordinator Ansvarlig: UIViewControllerTransitionCoordinator) {super.viewWillTransitionToSize (størrelse, withTransitionCoordinator: koordinator) self.viewWidth.text = "\\ (size.width ) pts wide "} ride func willTransitionToTraitCollection (newCollection: UITraitCollection, withTransitionCoordinator Ansvarlig:) {super.willTransitionToTraitCollection (newCollection, withTransitionCoordinator UIViewControllerTransitionCoordinator: koordinator) slå newCollection.horizontalSizeClass {case .Compact: self.sizeClass.text =" Compact Horisontal størrelsesklasse " case .Regular: self.sizeClass.text = "Regular Horisontal størrelsesklasse" case .Unspecified: self.sizeClass.text = "Uspesifisert Horisontal størrelsesklasse"}}

I viewWillTransitionToSize (_: withTransitionCoordinator :) metoden, vi oppdaterer den viewWidth etiketten for å vise den nye bredden på skjermen

I willTransitionToTraitCollection (_.. withTransitionCoordinator :) metode, sjekker vi for å se hvilke horisontal størrelsesklasse blir overført til og oppdatere sizeClass etiketten tilsvar

Du har kanskje lagt merke til at begge metodene gir en UIViewControllerTransitionCoordinator parameter. Dette objektet er i hovedsak brukt til å jobbe med animasjoner mellom view-kontrollere, og det gjør egentlig ikke forholder seg til Split Vis multitasking som systemet håndterer animasjoner. Den UIViewControllerTransitionCoordinator parameter eksisterer fordi disse UIContentContainer protokoll metodene er ikke eksklusivt for Delt visning multitasking og kan også bli utført i andre scenarier.

Kjør programmet ditt på en fysisk enhet eller i iPad Air 2 eller iPad Pro simulator. Når programmet har lansert, drar inn fra høyre side av skjermen og velge ett av programmene i listen.

Når app har åpnet, trykker og holder på den lille baren til venstre for bare åpnet app som vist nedenfor.

Dra delelinjen som vises til midten av skjermen, som vist i følgende skjermbilde og slipper den.

Når appen fades tilbake i de to etiketter bør oppdatere med riktig visning bredde og horisontal størrelsesklasse.

2. Bilde i bilde Video

Som med Slide Over og Split View, hvis du bruker Xcode 7 eller senere, så din app vil automatisk støtte Bilde i bilde. For audiovisuelt innhold, gjøres dette ved hjelp av AVPlayerViewController klassen.

Før du kan begynne å bruke bilde i bilde, men du må aktivere en funksjon for målet. Velg målet ditt, åpne Capabilities-fanen i prosjekt Navigator, må du aktivere bakgrunnsmodi, og kryss av i boksen merket Audio, AirPlay og Bilde i bilde.

Kjør programmet igjen, og trykk på Spill Video-knappen. Videoen jeg har tatt med i start prosjektet vil begynne å spille. Med video avspilling, går du til startskjermen ved å trykke på hjem-knappen på enheten eller Kommando-Skift-H hvis du bruker simulatoren.

Alternativt kan du trykke på den lille knappen i nedre venstre hjørne for å legge inn bilde i bilde-modus. Du vil se at videobildet minimerer og forblir på skjermen, komplett med knapper for å gjenåpne, play /pause og lukke.

På dette stadiet, vil du legge merke til at hvis du trykker på knappen for å begynne å se på video i fullskjerm igjen, vil programmet åpne men videoavspilling visningen kontrolleren vises ikke i det hele tatt. Du kan endre denne atferden ved konform utsikten styringen til AVPlayerViewControllerDelegate protokollen

Start med å lage den ViewController klasse i samsvar med den AVPlayerViewControllerDelegate protokollen
klasse ViewController:.. UIViewController, AVPlayerViewControllerDelegate

Deretter erstatte prepareForSegue ( _: avsender :) med følgende gjennomføring:
styre func prepareForSegue (naturlig overgang: UIStoryboardSegue, avsender:? AnyObject) {la destination = segue.destinationViewController som! AVPlayerViewController destination.delegate = selv la url = NSBundle.mainBundle () URLForResource ("Video", withExtension: "mp4").! destination.player = AVPlayer (URL: url)? destination.player Beskytt din Nintendo DS ()}

Til slutt, legger playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart (_: AVPlayerViewController). metoden i AVPlayerViewControllerDelegate protokollen til ViewController klassen
func playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart (playerViewController: AVPlayerViewController) - > Bool {return false}

Ved å implementere denne metoden, sikrer vi at videospiller utsikt kontrolleren ikke lukkes når Picture in Picture-modus er angitt. Bygge og drive din app igjen og du vil se at når gjenåpning fra Picture in Picture, vil videoen fortsette å spille.

Hvis du ikke bruker en AVPlayerViewController å spille innholdet, det finnes andre måter som du kan støtte Picture in Picture video. Hvis du bruker en AVPlayerLayer å tillate et tilpasset brukergrensesnitt rundt videoen, kan du opprette en AVPictureInPictureController objekt å støtte Bilde i bilde. Dette er hva en slik implementering kan se slik ut:
self.pictureinPictureController = AVPictureInPictureController (playerLayer: layer) self.pictureinPictureController.delegate = //Enhver gjenstand i samsvar med den AVPictureInPictureViewControllerDelegate protocolif AVPictureInPictureController.isPictureInPictureSupported () {//display-knappen for å gå inn Bilde i bilde} ... func pictureinPictureButtonPressed () {self.pictureInPictureController.startPictureInPicture ()}
3. Deaktivering iPad Multitasking

Om for noen grunn, trenger du ikke vil at program for å støtte Slide Over, Delt visning, eller Bilde i bilde, kan du overstyre standard oppførsel levert av Xcode og iOS.

gli over og Delt visning

For Slide Over og Split View, er alt du trenger å gjøre er å legge den UIRequiresFullScreen nøkkelen til app Info.plist filen og sett den til YES. Anmeldelser
Bilde i bilde

Med AVPlayerViewController klasse, trenger du bare å sette allowsPictureInPicturePlayback eiendom til false.

For Bilde i bilde med en AVPlayerLayer objekt, gjør du ikke opprette en AVPictureInPictureController.

Til slutt, for videoer som vises via nettet via en WKWebView, må du sette den allowsPictureInPicturePlayback eiendom visningen konfigurasjon til false.

Konklusjon

Du skal nå være trygg på å lage programmer som støtter den nye gli over, Split View, og bilde i bilde multitasking evner lagt til iPad på iOS 9. Som du kan se, disse nye funksjonene gjør iPad en mye mer produktiv verktøy og de er veldig enkelt for utviklere å implementere i sine egne applikasjoner.

Som alltid, kan du la dine kommentarer og tilbakemeldinger i kommentarfeltet nedenfor.