iOS 9 o introducere în multitasking pe iPad

Introducere

Cu iOS 9, Apple a introdus o serie de capabilități de multitasking pentru iPad. Acestea includ Slide Overdivergenta, și Imagine în imagine. Dacă nu sunteți familiarizați cu aceste noi caracteristici, iată o scurtă prezentare generală.

Slide Over

Slide Over este disponibil pe iPad Mini 2 și mai târziu, toate modelele iPad Air și iPad Pro. Permite aplicațiilor să alunece din partea dreaptă a ecranului cu înălțimea totală a ecranului (în ambele orientări) și lățimea aproximativă a ecranului iPhone.

Imagine în imagine

Imaginea în Imagine este disponibilă pe toate modelele iPad care acceptă Slide Over. Permite ca videoclipul să continue să fie redat într-o vizualizare mică în timp ce lucrați cu alte aplicații pe iPad. Această vizualizare mică conține trei butoane pentru a controla redarea, a reveni la ecran complet, a juca / a întrerupe și a închide. Vizualizarea poate fi redimensionată sau temporar împinsă în partea laterală a ecranului.

Vedere separată

Vizualizarea Split este disponibilă pe iPad Mini 4, iPad Air 2 și iPad Pro. Acesta permite iPad-ului să ruleze două aplicații complet funcționale una lângă alta. Utilizatorul poate muta separatorul între cele două aplicații pentru a le redimensiona.

Rețineți că aplicația din stânga este menționată ca primar aplicație și aplicația din dreapta secundar app. Aplicația principală deține bara de stare a dispozitivului și ocupă întotdeauna cel puțin jumătate din ecran. Aplicația principală poate fi respinsă de utilizator, totuși, dacă se deplasează separatorul până la stânga.

Cerințe preliminare

Acest tutorial necesită să executați Xcode 7 sau mai recent pe OS X Yosemite sau mai târziu. De asemenea, presupune că ați învățat mărimea clasei și Aspectul automat. Dacă sunteți nou în designul adaptiv, atunci vă recomand să citiți tutorialul lui Jordan Morgan despre designul adaptiv. De asemenea, va trebui să descărcați proiectul Starter de la GitHub.

1. Glisați și vizualizați separat

configurație

În mod implicit, toate aplicațiile care sunt create din orice șablon Xcode 7 acceptă în mod automat Slide Over și Split View. Acest lucru se datorează faptului că aplicația dvs. este creată cu un LaunchScreen.storyboard fișier și o clasă de mărime activată Main.storyboard fişier.

Pentru proiectele create cu o versiune anterioară de Xcode, puteți activa funcția Slide Over și Split View pentru aplicația dvs., luând următoarele două etape.

Pasul 1

Creeaza o LaunchScreen.storyboard selectați fișierul iOS> Interfață utilizator> Ecran de lansare șablon. Ecranul de lansare va fi afișat odată ce aplicația dvs. a fost lansată de pe ecranul de pornire și în timpul încărcării.

Rețineți că această placă de scenarii înlocuiește imaginile de lansare statică pe care le-ați configurat deja pentru aplicația dvs..

Pasul 2

Asigurați-vă că interfața cu utilizatorul este utilizată mărimea clasei și Aspectul automat. Puteți verifica acest lucru selectând tabloul de bord al proiectului dvs., deschizând Inspector de dosar, și bifând Utilizați Auto Layout și Utilizați clase de mărime casete de selectare din Document Builder de interfață secțiune.

Rețineți că trebuie să faceți acest lucru pentru fiecare storyboard din proiectul dvs. Acum că știți cum să configurați corect o aplicație pentru Slide Over și Split View, este timpul să aflați cum să vă asigurați că aplicația dvs. funcționează bine alături de alte aplicații.

Mărimea clasei

Pentru funcția Slide Over, clasa de mărime curentă pentru aplicația dvs. atunci când rulează va fi întotdeauna aceeași. Când aplicația este aplicația principală, va avea acces la ecranul complet (lățimea obișnuită și clasa de dimensiuni înălțime) și nimic nu va fi diferit. Atunci când aplicația dvs. este deschisă prin intermediul funcției Slide Over, aplicația va avea o lățime compactă și o clasă de dimensiune normală în funcție de înălțime, indiferent de orientare.

Pe un iPad care acceptă Split View, totuși, fereastra aplicației poate fi redimensionată în orice moment și trebuie să fie proiectată astfel încât să se potrivească acestor dimensiuni. Următoarea diagramă arată diferitele configurații pentru dimensiunile aplicațiilor Split View și clasele de mărime asociate cu acestea:

Sursa: Îmbunătățirile Apple de adoptare a multitaskingului pe iPad: Ghid de pornire rapidă și prezentare separată

După cum vedeți, cu excepția cazului în care aplicația dvs. este aplicația principală și dispozitivul este orientat peisaj, de îndată ce trebuie să partajați ecranul cu o altă aplicație, aplicația dvs. va fi forțată într-o clasă de mărime compactă. Deoarece această modificare a mărimii depinde de utilizator și se poate întâmpla în orice moment, aplicația trebuie să poată trece ușor între diferite dimensiuni de vizualizare.

Rețineți că pe iPad Pro, în modul peisaj și 50/50 Split View, ambele aplicații primesc o clasă de dimensiuni orizontale obișnuite, după cum se arată mai jos.

Captură de ecran preluată din aplicația Tutorial finalizată

Metode de apel invers

Pentru a ține cont de aceste modificări în mărime, UIViewController clasa este conformă cu cele două protocoale, UITraitEnvironment și UIContentContainer.

UITraitEnvironment

Acest protocol conține a UITraitCollection proprietatea numită traitCollection și o metodă pentru schimbarea acestei colecții de trăsături, traitCollectionDidChange (_ :). Acest obiect de colectare a trăsăturilor vă permite să aflați detalii specifice despre starea de funcționare a aplicației dvs., cum ar fi scara de afișare, clasele de dimensiuni orizontale și verticale actuale, capacitatea 3D touch (denumită Force Touch by API) și tipul de dispozitiv curent (iPhone / iPod Touch, iPad, Apple TV sau Nespecificat).

UIContentContainer

Acest protocol conține a preferredContentSize proprietăți, precum și numeroase metode pentru schimbarea colecției de dimensiuni sau trăsături pentru containerul curent. Vom examina mai îndeaproape două dintre metodele definite de UIContentContainer protocol.

Deschideți proiectul de pornire descărcat de la GitHub și navigați la ViewController.swift. Apoi, adăugați următoarele metode la definiția clasei:

override functie viewWillTransitionToSize (dimensiune: CGSize, cuTransition Coordinator coordonator: UIViewControllerTransitionCoordinator) super.viewWillTransitionToSize (dimensiune, cuTransitionCoordinator: coordonator) self.viewWidth.text = "\ (size.width) pts wide" overrideTransitionToTraitCollection (newCollection: UITraitCollection, withTransitionCoordinator coordonator: UIViewControllerTransitionCoordinator) super.willTransitionToTraitCollection (newCollection, cuTransitionCoordinator: coordinator) comutare newCollection.horizontalSizeClass caz.Compact: self.sizeClass.text = "Clasa Compact Horizontal Size Class" .Regular: self.sizeClass.text = Clasă ".Nu este specificat: self.sizeClass.text =" Clasă orizontală nespecificată "

În viewWillTransitionToSize (_: withTransitionCoordinator :) metodă, actualizăm viewWidth pentru a afișa noua lățime a ecranului.

În willTransitionToTraitCollection (_: withTransitionCoordinator :) , verificăm pentru a vedea ce clasă de dimensiuni orizontale se trece la și actualiza sizeClass eticheta în consecință.

Este posibil să fi observat că ambele metode oferă o UIViewControllerTransitionCoordinator parametru. Acest obiect este utilizat în principal pentru a lucra cu animațiile între controalele de vizualizare și nu se referă într-adevăr la multitaskingul Split View, deoarece sistemul gestionează animațiile. UIViewControllerTransitionCoordinator parametru există deoarece acestea UIContentContainer metode de protocol nu sunt exclusive pentru multitaskingul Split View și pot fi executate și în alte scenarii.

Rulați aplicația pe un dispozitiv fizic sau în simulatorul iPad Air 2 sau iPad Pro. După lansarea aplicației, trageți din partea dreaptă a ecranului și selectați oricare dintre aplicațiile din listă.

Odată ce aplicația a fost deschisă, apăsați și țineți apăsată bara mică din partea stângă a aplicației deschise, după cum se arată mai jos.

Trageți separatorul care apare în mijlocul ecranului așa cum se arată în următoarea imagine de ecran și eliberați-l.

Atunci când aplicația se retrage, cele două etichete ar trebui să se actualizeze cu o lățime de vizualizare corectă și o clasă de dimensiuni orizontale.

2. Imagine în imagine video

Ca și în cazul diapozitivelor și a vizualizărilor separate, dacă utilizați Xcode 7 sau o versiune ulterioară, aplicația dvs. va accepta automat imaginea în imagine. Pentru conținutul audiovizual, acest lucru se face folosind AVPlayerViewController clasă.

Înainte de a începe să utilizați funcția Imagine în imagine, trebuie să activați o capacitate pentru țintă. Selectați țintă, deschideți Capacități în tabul Project Navigator, permite Moduri de fundal, și bifați căsuța de etichetă Audio, AirPlay și Imagine în Imagine.

Rulați aplicația din nou și apăsați pe Rulează video buton. Videoclipul pe care l-am inclus în proiectul de pornire va începe să fie redat. În timpul redării video, accesați ecranul de pornire apăsând butonul de pornire de pe dispozitiv sau Command-Shift-H dacă folosiți simulatorul.

Alternativ, puteți apăsa butonul mic din colțul din stânga jos pentru a intra în modul Imagine în imagine. Veți vedea că vizualizarea video minimizează și rămâne pe ecran, completată cu butoane pentru redeschidere, redare / pauză și închidere.

În acest moment, veți observa că dacă apăsați pe buton pentru a începe să vizualizați din nou ecranul video din nou, aplicația se va deschide, dar controlerul de vizualizare a redării video nu apare deloc. Puteți schimba acest comportament prin adaptarea controlerului de vizualizare la AVPlayerViewControllerDelegate protocol.

Începeți prin a face ViewController clasa este conformă cu AVPlayerViewControllerDelegate protocol.

clasa ViewController: UIViewController, AVPlayerViewControllerDelegate

Apoi, înlocuiți-l prepareForSegue (_: expeditor :) cu următoarea implementare:

override func prepareForSegue (segue: UIStoryboardSegue, expeditor: AnyObject?) la destinație = segue.destinationViewController as! AVPlayerViewController destination.delegate = auto-url = NSBundle.mainBundle () URLForResource ("Video", cu Extensie: "mp4")! destinație.player = AVPlayer (URL: url) destinație.player? .play ()

În cele din urmă, adăugați playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart (_: AVPlayerViewController) metodă a AVPlayerViewControllerDelegate protocol la ViewController clasă.

func playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart (playerViewController: AVPlayerViewController) -> Bool return false

Prin implementarea acestei metode, ne asigurăm că controlerul de vizualizare a player-ului video nu se închide când este introdus modul Imagine în imagine. Construiți și difuzați aplicația din nou și veți vedea că, atunci când redeschideți din Imagine în Imagine, videoclipul va continua să fie redat.

Dacă nu utilizați unul AVPlayerViewController pentru a reda conținutul dvs., există și alte modalități prin care puteți să susțineți Imagine în Imagine video. Dacă utilizați un AVPlayerLayer pentru a permite o interfață personalizată de utilizator în jurul videoclipului dvs., puteți crea un AVPictureInPictureController obiect pentru a sprijini imaginea în imagine. Aceasta ar putea arăta o astfel de implementare:

AutoPictureInPictureInPictureController = AVPictureInPictureController (playerLayer: layer) self.pictureinPictureController.delegate = // Orice obiect conform cu protocolul AVPictureInPictureViewControllerDelegate dacă AVPictureInPictureController.isPictureInPictureSupported () // Butonul Afișare pentru a intra în Imagine în Imagine ... func pictureinPictureButtonPressed () self. pictureInPictureController.startPictureInPicture ()

3. Dezactivarea multitasking-ului iPad

Dacă, din anumite motive, nu doriți ca aplicația dvs. să suporte funcția Slide Over, Split View sau Picture in Picture, puteți să înlocuiți comportamentul implicit furnizat de Xcode și iOS.

Prezentare panoramică și vizualizare separată

Pentru funcțiile Slide Over și Split View, tot ce trebuie să faceți este să adăugați UIRequiresFullScreen cheie pentru aplicația dvs. Info.plist fișier și setați-l la DA.

Imagine în imagine

Cu AVPlayerViewController clasa, trebuie doar să setați allowsPictureInPicturePlayback proprietate la fals.

Pentru imagine în imagine cu un AVPlayerLayer obiect, nu creați un AVPictureInPictureController.

În cele din urmă, pentru videoclipurile afișate pe web printr - un WKWebView, trebuie să setați allowsPictureInPicturePlayback proprietate a opiniei configurație la fals.

Concluzie

Acum ar trebui să fii încrezător în crearea de aplicații care să susțină noile capabilități de Slide Over, Split View și Picture in Multitasking adăugate la iPad pe iOS 9. După cum puteți vedea, aceste noi caracteristici fac iPad un instrument mult mai productiv și sunt foarte ușor pentru dezvoltatori să implementeze în propriile aplicații.

Ca întotdeauna, vă puteți lăsa comentariile și comentariile dvs. în comentariile de mai jos.

Cod