Elke versie van Xcode biedt ontwikkelaars verbeterde hulpmiddelen om hun apps te bouwen. De release van dit jaar, Xcode 6, introduceert nieuwe manieren waarop ontwikkelaars hun software kunnen ontwerpen en bouwen. In deze zelfstudie zal ik de nieuwe en verbeterde functies in Xcode 6 beschrijven en bekijken hoe u ze kunt gebruiken.
Tijdens de WWDC van dit jaar introduceerde Apple Swift, een nieuwe programmeertaal voor het ontwikkelen van software voor zijn apparaten. In lijn hiermee wordt Xcode 6 geleverd met een nieuwe functie genaamd Playgrounds die een interactief werkgebied biedt waar ontwikkelaars Swift-code kunnen schrijven en live feedback krijgen zonder de code op een apparaat of simulator uit te voeren. Dit is een leuke toevoeging aan Xcode, want je kunt nu met code experimenteren en snelle, real-time resultaten krijgen voordat je deze in je basiscodebasis opneemt.
Een belangrijk onderwerp bij de WWDC van dit jaar was het bouwen van adaptieve applicaties. In plaats van applicaties te ontwikkelen die gericht zijn op specifieke schermformaten, worden ontwikkelaars aangemoedigd applicaties te ontwikkelen die zich aanpassen aan het apparaat waarop ze worden uitgevoerd, ongeacht de schermgrootte..
Dit is een zet die een aantal releases startte met de introductie van Auto Layout in iOS 6, waardoor ontwikkelaars apps konden maken die zowel op de 3.5 "als op de 4.0" schermen werken. Het is nu verder verbeterd om iOS-ontwikkelaars in staat te stellen apps te bouwen die op alle ondersteunde iPhones worden uitgevoerd, inclusief de nieuwe 4,7 "iPhone 6 en 5.5" iPhone 6 Plus en iPads die dezelfde codebasis gebruiken.
Interface Builder heeft grote veranderingen ondergaan die het ontwikkelen van dergelijke adaptieve apps mogelijk maken. Er zijn ook nieuwe functies toegevoegd die het ontwerpproces van de gebruikersinterface verbeteren. We zullen hierna naar deze nieuwe veranderingen kijken.
Grootte klassen definiëren de canvasgrootte die wordt gebruikt in lay-outs. Hiermee kunt u opgeven hoe de gebruikersinterface van de toepassing verandert wanneer de beschikbare grootte van uw weergaveregelaar verandert. Dit maakt het mogelijk om een uniform storyboard te hebben bij het bouwen van een universele applicatie. Vroeger moest je twee afzonderlijke storyboards ontwerpen, een voor de iPad en een voor de iPhone.
Een grootteklasse identificeert een relatieve hoeveelheid weergaveruimte voor de hoogte (verticale dimensie) en breedte (horizontale dimensie). Er zijn momenteel twee grootteklassen, compact en regelmatig. Een iPhone in portret bijvoorbeeld, heeft een compacte breedte en een normale hoogte. Een iPad heeft een normale breedte en hoogte in zowel portret- als landschapsoriëntaties.
Merk echter op dat een grootteklasse niet noodzakelijkerwijs op één apparaat in één richting is gebaseerd. Een iPad kan bijvoorbeeld een weergave hebben met een iPhone-stijlindeling (een compacte horizontale en een normale verticale grootteklasse) wanneer deze wordt gepresenteerd op een kleinere ruimte op het apparaat, en een iPad-stijlindeling (een normale horizontale en een normale verticale grootteklasse ) wanneer de beschikbare ruimte groter is.
U wijzigt de grootteklassen met behulp van de Grootte klassen in de buurt van de werkbalk voor opmaak onder aan het Interface Builder-canvas. Interface Builder start u in de ieder breedte en ieder hoogte-grootteklasse, waar u algemene gebruikersinterfacecomponenten en beperkingen voor de verschillende schermafmetingen en -oriëntaties kunt opmaken. Vervolgens werkt u de onderdelen bij die moeten worden gewijzigd wanneer de beschikbare schermgrootte verandert door wijzigingen aan te brengen in de gebruikersinterface in de verschillende grootteklassen.
Xcode 6 introduceert adaptieve seguetypen die geschikter zijn voor de nieuwe adaptieve lay-outs, omdat ze verschillende weergaven presenteren afhankelijk van de omgeving waarin ze worden uitgevoerd. Bijvoorbeeld door gebruik te maken van Laat details zien met een gesplitste weergave op een iPad zal het detail vervangen worden, maar op een iPhone zal het dat detail opzij duwen naar de meester. Sommige van de oude segmenten, zoals push en modal, zijn nu verouderd.
Het Interface Builder-canvas is interactiever dan ooit. Eerder moest u uw app uitvoeren om wijzigingen te zien met betrekking tot aangepaste objecten, aangepaste lettertypen en lokalisatie. Nu kunt u aangepaste lettertypen selecteren in de fontkiezer van Interface Builder en deze laten verschijnen in het Interface Builder-canvas.
U kunt zelfs aangepaste objecten maken en deze laten renderen op het Interface Builder-canvas. U doet dit door een aangepast framework te maken, uw aangepaste klasse aan dat doel toe te voegen en die klasse te markeren met de @IBDesignable
vlag (IB_DESIGNABLE
in Objective-C). Hierdoor weet Interface Builder dat een klasse aangepaste inhoud kan weergeven op zijn canvas.
Anders dan het kunnen weergeven van aangepaste objecten in Interface Builder, kunt u ook eigenschappen met de markering markeren @IBInspectable
markeer en laat ze verschijnen in het Interface Builder-infovenster, waarin ze kunnen worden bewerkt net als andere eigenschappen in uw weergaven. Het is niet een vereiste dat een klasse gemarkeerd moet worden om inspecteerbare eigenschappen te hebben.
U kunt ook de code voor ontwerptijd alleen opgeven. U kunt dit bijvoorbeeld gebruiken om de weergave vooraf in te vullen met voorbeeldgegevens om een beter beeld van de interface te krijgen. U doet dit door de prepareForInterfaceBuilder
methode. Anders dan dat, kunt u gebruiken #als TARGET_INTERFACE_BUILDER
om code op te nemen in of uit te voeren in de uiteindelijke Interface Builder-weergave.
Met de Voorvertoningseditor kunt u nu meerdere voorbeelden van verschillende gesimuleerde apparaten naast elkaar weergeven. U kunt niet alleen zien hoe uw app eruitziet op verschillende apparaten, maar u kunt ook instellen dat elk apparaat in de staande of liggende modus staat. Dit biedt een snelle manier om de gebruikersinterface van uw app op verschillende apparaten en oriëntaties te bekijken zonder deze eerst uit te voeren.
Apple heeft nieuwe gametechnologieën toegevoegd aan Xcode 6 en iOS 8, namelijk SceneKit en Metal. SceneKit, dat eerder beschikbaar was in OS X, is een 3D-scènedefinitieprogramma. Metaal is een raamwerk dat kan worden gebruikt voor het maken van sterk geoptimaliseerde grafische weergaven en computertaken dankzij de lage overheadtoegang tot de A7 en A8 GPU.
SpriteKit is ook verbeterd met per-pixel physics occlusie, fysica velden, universele kinematica en beperkingen, shaders, belichtingen en schaduwen.
Een andere belangrijke nieuwe functie in SpriteKit is de SpriteKit Level Editor waarmee je scènes visueel kunt samenstellen. Net zoals u uw gebruikersinterface in Interface Builder kunt maken zonder een code te schrijven, kunt u hetzelfde doen in een SpriteKit-spel met de SpriteKit-niveaueditor..
Storyboards zijn nu geïntroduceerd in OS X-ontwikkeling. Net als bij de ontwikkeling van iOS kunt u uw weergavenlay-outs en draadweergaven samen met verschillende seguiontaties instellen. Op het moment van schrijven zijn sommige functies, waaronder storyboards, nog steeds uitgeschakeld in Xcode (6.0.1) voor OS X-ontwikkeling in afwachting van de OS X Yosemite-release.
Gebaarherkenners zijn nu beschikbaar in AppKit. Deze worden vrijwel op dezelfde manier gebruikt als in iOS-ontwikkeling. U kunt de beschikbare gebaren bekijken in de Objectbibliotheek in Interface Builder.
Lokalisatie gebeurt anders in Xcode 6 dan voorheen. U kunt al uw localiseerbare inhoud nu exporteren naar XLIFF, de industriestandaard die door veel vertaaldiensten wordt begrepen. Wanneer u de vertalingen terugkrijgt, importeert u ze en Xcode voegt de nieuwe inhoud samen in uw project. U zou één XLIFF-bestand moeten hebben voor elke taal die u ondersteunt in uw app.
U kunt nu een voorbeeld van gelokaliseerde inhoud bekijken zonder de locale van uw apparaat of simulator te wijzigen instellingen. Selecteer om dit te doen Product> Schema> Wijzig regeling, selecteer vervolgens Rennen en klik op de opties tab. U kunt uw taal naar keuze selecteren in de Applicatie taal menu. Xcode wordt geleverd met de Dubbele lengte Pseudolanguage waar je mee kunt testen als je geen andere taal hebt toegevoegd. Wanneer u de app uitvoert, zou u de gelokaliseerde inhoud moeten zien.
U kunt ook gelokaliseerde inhoud bekijken zonder uw app uit te voeren. Om dit te doen, gebruikt u de Voorvertoningseditor om te schakelen tussen de verschillende talen die uw app ondersteunt. De standaardtaal wordt in de rechterbenedenhoek van de editor weergegeven en wanneer u erop klikt, krijgt u een lijst met beschikbare talen te zien. Om het uit te testen zonder een taal toe te voegen, kunt u de Double Length Pseudolanguage gebruiken.
Xcode 6 presenteert nu benoemde simulators die overeenkomen met specifieke apparaten, zoals iPhone 5s, in plaats van de vorige generieke namen, zoals 64-bit iPhone Retina.
Onder de apparaten waaruit u kunt kiezen, zijn de aanpasbare iPhone en de iPad met aanpasbare afmetingen. Hiermee kunt u de klassen width, height en size van de simulator opgeven. Hiermee kunt u de aanpassingsmogelijkheden van uw app testen op alle bestaande apparaten van Apple en op toekomstige apparaten, zonder dat u voor elk apparaat een simulator hoeft te downloaden..
Met de nieuwe iOS-simulator kunt u gegevens- en configuratie-instellingen bij elkaar houden. Voer één configuratie uit voor één versie van een app met zijn eigen gegevens en een andere configuratie voor een andere app-versie. Dit betekent dat u kunt simuleren dat u meerdere gebruikers op uw computer hebt. Elke gebruiker heeft zijn eigen gegevens en configuraties.
Met het HomeKit-framework kan uw app communiceren met en de aangesloten accessoires bedienen in het huis van een gebruiker. In de bètaversies van Xcode 6, kwam de HomeKit Accessory Simulator als onderdeel van Xcode, maar het is nu onderdeel van de Hardware I / O-hulpmiddelen voor Xcode. Je kunt het downloaden op het iOS Dev Center.
Xcode 6 maakt het debuggen van de gebruikersinterface van je app veel eenvoudiger met de live view-foutopsporingsfunctie. U kunt nu uw actieve app pauzeren en de gepauzeerde gebruikersinterface in een 3D-weergave ontleden. De weergave-foutopsporing toont u de weergavehiërarchie en beperkingen voor Auto-indeling. Als u een weergave selecteert, kunt u de eigenschappen ervan inspecteren in het infovenster of naar de relevante code springen in de assistent-editor. Hiermee kunt u zaken inspecteren zoals problemen met Auto Layout-conflicten, zien waarom een weergave is verborgen of afgekapt, enzovoort.
Start de app en klik op de knop om de live weergave-foutopsporing te starten Debug View Hierarchy knop op de werkbalk voor foutopsporing.
Je app wordt onderbroken en je krijgt een 3D-visualisatie van de gebruikersinterface te zien. U kunt overal op het canvas slepen om de weergave te draaien.
U kunt schakelen tussen verschillende weergavestatussen met de knoppen onder het canvas.
Van links naar rechts:
Quick Look is geïntroduceerd in Xcode 5 en stelt u in staat om de inhoud van een object te bekijken tijdens het debuggen. Quick Look ondersteunt veelgebruikte objecten zoals afbeeldingen, bezierpaden, kaartlocaties, enzovoort.
In Xcode 6 is dit verbeterd om twee nieuwe objecttypen, views (UIView
en NSView
) en aangepaste objecten. Als u Snelle weergave voor aangepaste objecten wilt inschakelen, implementeert u de debugQuickLookObject
methode in de aangepaste klasse.
De foutopsporingsnavigator registreert en geeft recent uitgevoerde blokken weer, evenals wachtrijen die in de wachtrij zijn geplaatst. Je kunt het gebruiken om te zien waar je wachtrijen staan en om de details te bekijken van wat er is ingesteld om uit te voeren. U kunt foutopsporing in blokken inschakelen door de Foutopsporing> Werkstroom foutopsporing> Toon altijd in behandeling zijnde blokken in wachtrijen menu-optie.
Foutopsporingsmeters bieden informatie over het gebruik van de app tijdens het debuggen. Xcode 6 bevat bijgewerkte meters, waaronder grafische profilering voor het nieuwe metalen raamwerk en iCloud-ondersteuning voor documenten in de Cloud- en CloudKit-functies.
Anders dan deze verbeteringen introduceert Xcode 6 twee nieuwe debug-meters, netwerk- en schijfactiviteit.
Netwerkactiviteit geeft aan hoeveel gegevens uw app verzendt en ontvangt, evenals een lijst met open verbindingen. U kunt een geschiedenistijdlijn bekijken om het netwerkgebruik te controleren, zodat u weet wanneer en waarom pieken in het netwerkgebruik of netwerkfouten zijn opgetreden.
Schijfactiviteit toont realtime informatie over de lees- en schrijfbewerkingen van uw app op schijf. Het geeft ook informatie over alle geopende bestanden. Er is een geschiedenistijdlijn van deze schijf-I / O-activiteit die u kunt controleren.
Asset-catalogi ondersteunen nu grootteklassen. Dit betekent dat u nu eenvoudig uw gebruikersinterface kunt aanpassen voor een compacte en regelmatige hoogte of breedte door verschillende afbeeldingen te bieden voor elke grootteklasse.
Eerder ondersteunden asset-catalogi alleen PNG-afbeeldingen, maar in Xcode 6 is ondersteuning voor JPEG- en PDF-vectorafbeeldingen toegevoegd.
U kunt een XIB of storyboard gebruiken als de startafbeelding van uw toepassing. Het besturingssysteem genereert de benodigde startafbeeldingen voor uw app. Hiermee hoeft u geen afzonderlijke items voor de startafbeeldingen op te geven en kunt u deze ontwerpen in Interface Builder.
Als u een XIB of storyboard wilt instellen als startafbeelding van uw app, selecteert u het project in de Project Navigator en kies een doelwit uit de lijst met doelen. Onder de Algemeen tab, zoek de sectie App-pictogrammen en start afbeeldingen en selecteer het juiste bestand in het menu met het label Start schermbestand.
Er zijn nieuwe API's toegevoegd aan het XCTest-framework die het testen van asynchrone code mogelijk maken. Dit gebeurt door verwachtingsobjecten, XCTestExpectation
, die verwachte gebeurtenissen beschrijven. XCTestCase
heeft een nieuwe API die wacht op de verwachting en aan een time-out. Er wordt een voltooiingshandler aangeroepen wanneer alle evenementen zijn voltooid of wanneer de time-out is bereikt. Het kan tegelijkertijd op meerdere asynchrone gebeurtenissen wachten. U kunt nu gemakkelijk testen op systeeminteracties die asynchroon worden uitgevoerd, zoals bestands-I / O, netwerkaanvragen, enz.
Het verbeterde XCTest-raamwerk kan nu de prestaties van elk onderdeel van een app kwantificeren. Xcode voert uw prestatietests uit en laat u een basislijnprestatiemetriek definiëren. Elke volgende testrun vergelijkt de prestaties, geeft de verandering in de loop van de tijd weer en waarschuwt u, door het probleemgebied te markeren, voor plotselinge regressies die een code-commit zou kunnen introduceren. Als de gemiddelde prestatiemeting aanzienlijk afwijkt van de basislijn, mislukt de test. Dit is een geweldige manier om prestatieregressies in uw app te detecteren.
Met de introductie van prestatietests komt de mogelijkheid om tests in instrumenten te profileren. U kunt een test- of testsuite selecteren om te profileren en nader onderzoek en analyse in instrumenten uitvoeren om uit te zoeken waarom de test is mislukt en de oorzaak van de regressie te vinden.
Instruments heeft een bijgewerkte gebruikersinterface. Met de nieuwe sjabloonkiezer kunt u uw apparaat en doel selecteren, evenals het startpunt voor uw profilatiesessie.
Er is een nieuwe tellers sjabloon die is gecombineerd met Evenementen om een krachtig beeld te geven van individuele CPU-gebeurtenissen. U kunt zelfs formules opgeven om gebeurtenisaggregaten, ratio's en meer te meten.
In Xcode 6 wordt ook geleverd met ondersteuning voor Swift en je kunt het ook gebruiken om app-extensies te profileren. Er is ook ondersteuning voor simulatorconfiguraties. De simulatorconfiguraties worden als instrumenten behandeld door Instruments, waardoor het eenvoudig is om te starten of zich te hechten aan processen in de simulator.
Apple blijft zijn ontwikkelaarstools verbeteren en dit is te zien in elke belangrijke release van Xcode. Xcode 6 verbetert zijn voorgangers om ontwikkelaars tools te geven die hun workflow verbeteren en het hele ontwikkelingsproces aanzienlijk beter maken.