iOS 6 beta 3 – hier is alles nieuw + changelog (voortdurend bijgewerkt artikel) x14

  Ruim een ​​uur nu Apple gelanceerd iOS beta 6 3 voor ontwikkelaars van applicaties voor de App Store en bevatte een reeks wijzigingen, waarvan de meeste helaas subtiel zijn. In dit artikel hebben we het belangrijkste nieuws vermeld, maar ook de officiële changelog die door het bedrijf is gepubliceerd.

1. Opnieuw een nieuw menu voor de Kaarten-applicatie in dit artikel vindt u de details.

2. Het systeem dat u waarschuwt wanneer een applicatie toegang vraagt ​​tot uw gegevens uit het Adresboek is verbeterd.

3. Veel van de problemen die de Apple TV had met de Netflix-applicatie, met de afstandsbediening, met de diavoorstellingen of met de YouTube-applicatie waren opgelost.

4. Probleem opgelost waarbij de knoppen Accepteren/Weigeren voor FaceTime-oproepen niet werden weergegeven.

5. Op de iPad-tablet zijn de menu's Geschiedenis, Favorietenlijst en Lezen van Safari nu beschikbaar op één tabblad.

6. Het Privacy-gedeelte bevat nu pictogrammen voor elke afzonderlijke categorie.

7. Siri is moeilijker om vragen te beantwoorden, maar de stem is enigszins aangepast door Apple.

8. Gebruikers hebben de mogelijkheid om e-mailadressen te registreren met het domein @icloud.com.

9. De gedeelde fotostream bereikt ook iPhone 3GS en iPod Touch.

10. De VIP-e-mailfunctie bereikt ook iPod Touch.

11. Siri kan het AssistiveTouch-menu openen.

12. De Mail-applicatie heeft een nieuwe knop voor het archiveren van e-mails.

13. De toepassing Kaarten geeft informatie over het verkeer in bepaalde landen.

14. Wanneer u een applicatie bijwerkt, toont de knop Updates in de App Store u een indicator over de voortgang van de installatie van de applicatie.

 

Opmerkingen en bekende problemen

De volgende problemen hebben betrekking op het gebruik van iOS SDK 6.0 om code te ontwikkelen.

adresboek

  • Wanneer een app een nieuwe privacystatus heeft en probeert eenABNewPersonViewController, kan de gebruiker die weergavecontroller niet correct sluiten, zelfs als deze toegang tot contacten toestaat. De gebruiker moet de app geforceerd afsluiten en opnieuw starten.
  • Toegang tot contacten aanvragen:
    • Gebruikers kunnen per app toegang tot contactgegevens verlenen of weigeren. Als u toegang tot contactgegevens wilt aanvragen, roept u de functie ABAddressBookRequestAccessWithCompletion aan nadat u de ABAddressBookCreateWithOptions functie. De functie ABAddressBookRequestAccessWithCompletion blokkeert de app niet terwijl de gebruiker wordt gevraagd toegang te verlenen of te weigeren. Totdat toegang is verleend, kan de ABAdresBoekRefobject bevat geen contacten en elke poging om contacten te wijzigen mislukt met a kABOperationNotPerposedByUserErrorfout. De gebruiker wordt alleen gevraagd wanneer er voor de eerste keer toegang wordt gevraagd; eventuele volgende aanroepen van ABAddressBookCreateWithOptions zullen de bestaande machtigingen gebruiken. De voltooiingshandler wordt aangeroepen in een willekeurige wachtrij. Als het ABAddressBookRef-object in de hele app wordt gebruikt, moet al het gebruik naar dezelfde wachtrij worden verzonden om ABAddressBookRef op een thread-veilige manier te kunnen gebruiken.
  • Status van toegangsautorisatie controleren:
    • Een app kan de autorisatiestatus-API gebruiken om te controleren of deze toegang heeft tot contacten, agenda's, herinneringen of fotobibliotheek. Deze API is onafhankelijk van de API voor verzoektoegang en zal de gebruiker niet vragen toegang te verlenen of te weigeren. Met deze API kan een app de weergave aanpassen van zijn UI-elementen die toegang hebben tot de dataklasse. Als de toegang tot contacten bijvoorbeeld geautoriseerd of niet bepaald is, kan er een UI-knop worden weergegeven waarmee u een contact kunt kiezen.
    • Roep voor Adresboek de functie ABAddressBookGetAuthorizationStatus aan. Voor Event Kit roept u de autorisatieStatusForEntityType: klassemethode aanEKEventStore. Voor Assets Library roept u de autorisatieStatus-klassemethode aan van ALAssetsBibliotheek. De betekenis van de statuswaarden die worden geretourneerd is als volgt:
      • Autorisatiestatus niet bepaald - De gebruiker heeft nog geen keuze gemaakt of deze app toegang krijgt tot de dataklasse.
      • Autorisatiestatus Beperkt – Deze app heeft geen toegang tot de dataklasse. De gebruiker kan de status van deze app niet wijzigen, mogelijk vanwege actieve beperkingen zoals ouderlijk toezicht.
      • Autorisatiestatus geweigerd - De gebruiker heeft expliciet de toegang tot de gegevensklasse voor deze app geweigerd.
      • Autorisatiestatus Geautoriseerd – Deze app heeft toegang tot de dataklasse.

Apple TV

  • In sommige gevallen kan het scherm de verkeerde resolutie weergeven. Start uw Apple TV opnieuw op om deze terug te zetten naar de juiste resolutie.
  • OPGELOST: Netflix-video's worden mogelijk niet hervat waar je was gebleven.
  • OPGELOST: De geschiedenislijst in de YouTube-app wordt gewist wanneer je de app afsluit en opnieuw opent.
  • Apple TV reageert mogelijk traag terwijl er op de achtergrond een download bezig is.
  • Apple TV wordt mogelijk opnieuw opgestart tijdens het gebruik van de Remote-app.
  • Apple TV wordt mogelijk opnieuw opgestart wanneer de systeemtaal wordt gewijzigd.
  • Fotostream laadt niet bij een tweede keer inloggen. Start Apple TV opnieuw op om het probleem op te lossen.
  • Er wordt geen muziek afgespeeld tijdens diavoorstellingen met foto's.
  • Nieuw gedrag:
    • Kies externe luidsprekers in Instellingen > AirPlay.
    • Stel een schermcode voor AirPlay in via Instellingen > AirPlay.
    • Bewaar meerdere iTunes Store-accounts in Instellingen > iTunes Store.
    • Houd de knop Selecteren ingedrukt om de pictogrammen in het hoofdmenu opnieuw te rangschikken.
    • Verberg de hoofdmenupictogrammen in Instellingen > Algemeen > Ouderlijk toezicht.

Dag

  • De NSNetService class- en CFNetService-API's bevatten standaard geen P2P-interfaces. Om via P2P-interfaces door services te bladeren, te registreren of deze op te lossen, moet een app de hieronder genoemde Bonjour DNSService*() API's gebruiken.
  • Als u de parameter interfaceIndex instelt op kDNSServiceInterfaceIndexAny in de volgende API's, worden standaard geen P2P-interfaces opgenomen. Om P2P-interfaces op te nemen, moet u nu de vlag kDNSServiceFlagsIncludeP2P instellen wanneer u kDNSServiceInterfaceIndexAny gebruikt, of de interfaceIndex instellen op kDNSServiceInterfaceIndexP2P. De getroffen API's hebben:
    • DNSServiceBladeren
    • DNSServiceRegistreer
    • DNSServiceResolve
    • DNSServiceRegisterRecord
    • DNSServiceQueryRecord

Woordenboek

  • Er is een bekend probleem met woordenboeken wanneer wordt geprobeerd een woord in een andere taal dan Engels of Japans te definiëren. Wanneer de referentiebibliotheek wordt gepresenteerd, krijgt de gebruiker de optie te zien om een ​​woordenboek te downloaden; het downloaden begint mogelijk niet. De gebruiker kan buiten de popover op een iPad tikken of op de knop "Gereed" op de iPhone of iPod touch tikken om het downloadverzoek af te wijzen.

Evenementenkit

  • Toegang aanvragen tot agenda's of herinneringen:
    • Gebruikers kunnen per app toegang tot gebeurtenis- en herinneringsgegevens verlenen of weigeren. Om toegang tot gebeurtenis- en/of herinneringsgegevens aan te vragen, roept u de requestAccessToEntityType:completion: methode aan van EKEventStore. Hierdoor wordt de app niet geblokkeerd terwijl de gebruiker wordt gevraagd toegang te verlenen of te weigeren. Totdat er toegang is verleend voor een entiteitstype, bevat de gebeurtenisopslag geen agenda's voor dat entiteitstype en zal elke poging om gegevens op te slaan mislukken.
    • De gebruiker wordt alleen gevraagd wanneer er voor de eerste keer toegang wordt gevraagd; eventuele volgende instantiaties van EKEventStore zullen de bestaande machtigingen gebruiken. De voltooiingshandler wordt aangeroepen in een willekeurige wachtrij.

Game Center

  • Wanneer u in de app op de iPad een nieuw Game Center-account aanmaakt, verschijnt de pop-over voor het selecteren van de maand voor uw geboortedatum zonder dat u inhoud kunt selecteren.
  • De authenticatiemethode van GKLocalPlayer is verwijderd. Authenticatie begint automatisch wanneer de voltooiingshandler is ingesteld.

iCloud

  • Wanneer u een iCloud-account aanmaakt, kunt u elke op e-mail gebaseerde Apple ID gebruiken, of u kunt uw bestaande iCloud-account gebruiken. Als u een MobileMe-account had die u nog niet naar iCloud hebt verplaatst, moet u deze eerst verplaatsen door naar te gaanhttp://me.com. Overstappen naar iCloud is slechts een beperkte tijd mogelijk. Inloggen op een MobileMe-account wordt niet ondersteund in iOS 6. Voorzieningenprofielen moeten voor iCloud zijn ingeschakeld in de iOS Provisioning Portal. Om een ​​inrichtingsprofiel voor iCloud in te schakelen, navigeert u naar het App ID-gedeelte van de iOS Provisioning Portal en configureert u uw App ID voor iCloud. Nadat u de app-ID voor iCloud hebt ingeschakeld, genereert u uw inrichtingsprofielen opnieuw om ze in te schakelen voor iCloud.
    • e-mailadressen van icloud.com zijn nu beschikbaar voor iCloud-mailgebruikers. Gebruikers die zich aanmelden voor nieuwe Apple ID's of Mail voor de eerste keer inschakelen op hun iCloud-account, ontvangen automatisch een @icloud.com-e-mailadres in plaats van een me.com-e-mailadres. iCloud-gebruikers met @me.com-adressen die zijn gebruikt met iOS 6 bèta 3 ontvangen een @icloud.com-e-mailadres dat overeenkomt met hun @me.com-adres.
    • Er kan geen e-mail van icloud.com worden verzonden www.icloud.com. Gebruikers moeten gebruiken http://beta.icloud.com op dit moment als ze e-mail willen verzenden vanaf hun icloud.com-adres met behulp van een webbrowser.
  • De setSortDescriptors: methode van NSMetadataQuery wordt niet ondersteund.
  • In iOS 6 kunnen bestanden die zijn beveiligd via Gegevensbescherming niet worden gebruikt met iCloud Storage API's.
  • Bestandsnamen zijn hoofdlettergevoelig in OS X, maar hoofdlettergevoelig in iOS. Dit kan tot problemen leiden bij het delen van bestanden tussen de twee platforms met behulp van iCloud. U moet op iOS stappen ondernemen om te voorkomen dat u bestanden maakt waarvan de namen alleen per hoofdlettergebruik verschillen.
  • Het gedrag van gecoördineerde leesbewerkingen op iCloud-documenten is veranderd. Wanneer uw app in eerdere iOS-releases een gecoördineerde leesbewerking op een bestand of pakket uitvoerde en de iCloud-daemon merkte dat er een nieuwere versie van het item beschikbaar was, werd de gecoördineerde leesbewerking geblokkeerd totdat de nieuwere versie van het item werd gedownload en naar de schijf geschreven.
    Wanneer u vanaf iOS 6 bèta 3 een gecoördineerde leesbewerking start voor een bestand of pakket waarvoor u al een lokale versie hebt, wordt de gecoördineerde leesbewerking zo snel mogelijk toegestaan ​​en wordt de eventuele nieuwe versie gedownload in de achtergrond. Deze oproep wordt alleen geblokkeerd vanwege downloadredenen als er lokaal geen versie van het bestand beschikbaar is.
    Bovendien zal de iCloud-daemon, als er een conflict is met het bestand, niet wachten totdat alle conflictverliezers van het bestand beschikbaar zijn om het bestand beschikbaar te maken voor uw app. Het zal de verschillende versies van het conflicterende bestand zo snel mogelijk beschikbaar maken. Uw app kan gebruik maken van de bestaande bestandscoördinatie en de UIDocumentcallbacks om op de hoogte te worden gesteld wanneer de conflictverliezers zijn gedownload en beschikbaar zijn.

iMessage en FaceTime

  • OPGELOST: De knoppen Beantwoorden en Weigeren ontbreken bij het ontvangen van oproepen in liggende stand.

iTunes

  • iTunes 10.6.3 is vereist voor iOS SDK 6.0.
  • OPGELOST: Bij het herstellen vanaf een iTunes-back-up wordt het apparaat na het opnieuw opstarten af ​​en toe weergegeven als een nieuw apparaat. Als dat gebeurt, stelt u het apparaat in als een 'nieuw apparaat' wanneer u voor de tweede keer wordt gevraagd het te herstellen. Alle gegevens zouden correct moeten zijn hersteld, maar de synchronisatie-instellingen, inclusief app-indeling in iTunes, gaan verloren.

Maps

  • In iOS 6 en hoger is Map Kit gebouwd op een nieuwe infrastructuur die wordt gehost door Apple. Eerdere iOS-releases blijven de service van Google gebruiken. OPGELOST: als Maps niet op de achtergrond actief is, wordt de foutmelding 'Maps kan geen verbinding maken met internet' weergegeven wanneer het wordt gestart vanuit een app van derden.
    • De API-compatibiliteit blijft behouden (zie bekende problemen hieronder).
    • Kaarten worden nu ondersteund in de Simulator.
    • Kaartgegevens zullen blijven evolueren; momenteel is er slechts een beperkte hoeveelheid satellietbeelden met hoge resolutie beschikbaar.
  • OPGELOST: Als Maps nog niet is gestart, wordt de huidige locatie niet weergegeven wanneer deze wordt gestart vanuit een app van derden.
  • Route-apps die tijdens de ontwikkeling geen dekkingsbestand specificeren, worden altijd weergegeven in de zoekresultaten van Maps-routering.
  • Het testen en debuggen van dekkingsbestanden voor het routeren van apps wordt alleen ondersteund tijdens de ontwikkeling via de Xcode "Run"-workflow. (U kunt het dekkingsbestand voor een bepaald Run-schema opgeven via het deelvenster Opties van de sectie Uitvoeren van de schema-editor.) Apps die worden gearchiveerd en gedistribueerd (buiten de App Store) op apparaten hebben geen toegang tot de dekkingsbestanden van de app .
  • Maps zoomt niet in op de huidige locatie wanneer het wordt gestart vanuit een app van derden.

Krantenkiosk

  • Alleen eenvoudige http-downloads werken met Kiosk.

Rekening-courantboekje

  • OPGELOST: Er verschijnt een vliegtuigpictogram tussen de herkomst en de bestemming voor alle soorten openbaar vervoer.
  • Het veld ‘Omschrijving’ is nu een verplicht veld voor een Pas. Alle passen die zonder deze code zijn gemaakt, kunnen niet worden gevalideerd en worden niet opgenomen.
  • OPGELOST: De Passbook-database is opnieuw ingesteld. U moet uw passen opnieuw toevoegen.
  • Passbook in de simulator vereist niet langer https/ssl bij gebruik van een webServiceURL bij het innemen van een pas.
  • Kan instapkaarten niet weergeven op het vergrendelscherm.

Herinneringen

  • OPGELOST: Er zijn problemen bij het toevoegen en bewerken van herinneringen in de Herinneringen-app op iPhone-apparaten:
    • De knop Gereed ontbreekt bij het toevoegen van een nieuwe herinnering.
    • De app crasht wanneer u op de knop Bewerken tikt om een ​​herinnering te bewerken.

Security

  • In iOS 5 wordt het ondertekenen van een certificaat met een MD5-handtekening niet ondersteund. Zorg ervoor dat certificaten handtekeningalgoritmen gebruiken die zijn gebaseerd op SHA1 of SHA2.
  • In iOS 6 zijn er verbeterde privacyopties voor agenda's, herinneringen, contacten en foto's.
    • Gebruikers krijgen toegangsdialoogvensters te zien wanneer een app toegang probeert te krijgen tot een van deze gegevenstypen. De gebruiker kan de toegang in- en uitschakelen via Instellingen > Privacy.
    • Ontwikkelaars kunnen voor elke klasse geïsoleerde gegevens een 'doel'-tekenreeks instellen. iOS geeft deze tekenreeks weer aan gebruikers om hen te helpen begrijpen waarom hun gegevens worden opgevraagd. Deze tekenreeksen kunnen worden toegevoegd met behulp van de Project-editor van Xcode, op het tabblad Info. De relevante sleutelnamen beginnen met de tekenreeks "Privacy -".
    • Er zijn wijzigingen in de Event Kit- en Adresboek-frameworks om ontwikkelaars met deze functie te helpen.

Simulator

  • Het duurt even voordat het waarschuwingspaneel voor het verwijderen van de app verschijnt in iOS Simulator.
  • OPGELOST: Tik op de koopknop in de weergave van eenSKStoreProductViewController object in iOS Simulator zorgt ervoor dat de app crasht.
  • Er worden geen privacywaarschuwingen weergegeven in iOS Simulator voor apps die toegang hebben tot Foto's, Contacten, Agenda en Herinneringen.
  • Het downloaden van gehoste inhoud voor in-app-aankoop in iOS Simulator wordt niet ondersteund.
  • Wanneer u probeert een MP3-geluid af te spelen in de Simulator, hoort u in plaats daarvan een ploffend geluid.
  • OPGELOST: Het gebruik van de iOS 5.1 SDK met het iPad-profiel (Retina) resulteert in een SpringBoard-crash. De iOS 5.1 SDK werkt met alle andere profielen en de iPad (Retina) SDK werkt met de iOS 6.0 SDK.
  • OPGELOST: Advertenties van het type ADAdTypeMediumRectangle verschijnen niet in iPad Simulator.

Gedeelde fotostream

  • De gebruiker moet naar Instellingen > iCloud gaan om ervoor te zorgen dat hij gedeelde fotostreammeldingen ontvangt.
  • Om een ​​fotostream met iOS 6 bèta te delen, moet u iemand uitnodigen via zijn iCloud-e-mailadres, anders ontvangt hij of zij de uitnodiging niet.
  • Als u upgradet van iOS 6 bèta 1 naar bèta 2, zal uw apparaat al uw gedeelde fotostreams opnieuw downloaden.
  • De functie Gedeelde fotostream is uitgeschakeld bij het updaten van iOS 6 bèta 1 naar een latere release. De standaardinstelling moet AAN zijn.
  • Als u gedeelde fotostreams uitschakelt, reageert de camera mogelijk niet meer. Als u de camera geforceerd afsluit, wordt dit probleem opgelost.

Social

  • Weibo verschijnt alleen in de app Instellingen als een Chinees toetsenbord is ingeschakeld.
  • De requestAccessToAccountsWithType:withCompletionHandler: methode van ACAccountStore is nu verouderd. Om toegang te krijgen tot gebruikersaccounts, gebruikt u derequestAccessToAccountsWithType:opties:voltooiing: methode. Geef in de optieparameter van deze nieuwe methode nul door voor toegang tot Twitter- en Weibo-accounts. Om toegang te krijgen tot Facebook-accounts geeft u een woordenboek door met de volgende sleutels (die zijn gedocumenteerd in ACAccountStore.h): U moet dit woordenboek niet langer toevoegen aan het Info.plist-bestand van uw app, zoals vereist was in bèta 1.
    • ACFacebookAppIdKey
    • ACFacebookPermissionsKey
    • ACFacebookPermissionGroupKey

Springplank

  • OPGELOST: Na het herstellen van een apparaat in iTunes of het uitvoeren van een 'Wis alle inhoud en instellingen', verschijnt de huidige achtergrond mogelijk pas nadat het apparaat eenmaal opnieuw is opgestart.

Status Bar

  • Het is nu mogelijk om tintparameters voor de statusbalk in te stellen in het Info.plist-bestand van uw app. U kunt dit doen om ervoor te zorgen dat de kleur van de statusbalk tijdens het opstarten overeenkomt met de kleur van de navigatiebalk van uw app. Om de tint van de statusbalk in te stellen, voegt u de sleutel UIStatusBarTintParameters toe aan uw Info.plist-bestand. De waarde van deze sleutel is een woordenboek met de juiste waarden die de navigatiebalk beschrijven die uw app heeft bij het opstarten. In het woordenboek moet de UINavigationBar-sleutel staan, waarvan de waarde ook een woordenboek is. Dat woordenboek bevat de stijl van de initiële navigatiebalk (met de stijltoets) en of deze doorschijnend is (met de doorzichtige toets). Als uw navigatiebalk deze gebruikt, kunt u ook de tintkleur ervan opgeven (met de TintColor-toets) of de naam van de aangepaste achtergrondafbeelding (met de BackgroundImage-toets).

UIKit

    • In iOS 5.1 is de UISplitViewController class gebruikt de glijdende presentatiestijl bij het presenteren van de linkerweergave (voorheen alleen te zien in Mail). Deze stijl wordt gebruikt wanneer de presentatie wordt gestart door het bestaande balkknopitem dat wordt geleverd door de deelnemersmethoden of door een veeggebaar in de rechterweergave. Er is geen aanvullende API-acceptatie vereist om dit gedrag te verkrijgen, en alle bestaande API, inclusief die van de UIPopoverController-instantie die door de gemachtigde wordt geleverd, blijft werken zoals voorheen. Als het gebaar niet wordt ondersteund in uw app, stelt u de presenteertMetGebaar eigenschap van uw gesplitste weergavecontroller op NEE, schakelt het gebaar uit. Het uitschakelen van het gebaar wordt echter afgeraden omdat het gebruik ervan een consistente gebruikerservaring in alle apps behoudt.
    • OPGELOST: In iOS 6 zijn wijzigingen geïntroduceerd, zodat je niet langer een afgevaardigde hoeft aan te stellen en een methode hoeft te implementeren voor gebarenherkenning met één vinger en één tik, in een poging om deze goed te laten werken met de UIControl voorwerpen.
    • In iOS 6 en hoger is de UIWebView klasse schildert de inhoud asynchroon.
    • OPGELOST: Ontwikkelaars proberen Automatische lay-out uit met UIScrollViewobjecten kunnen trillingen waarnemen in de schuifindicatoren op apparaten met Retina-displays.
    • Autorotatie verandert in iOS 6. In iOS 6 is deShouldAutorotateToInterfaceOrientatie: methode van UIViewController is verouderd. In plaats daarvan moet u deondersteunde interface-oriëntaties en ShouldAutorotate-methoden OPGELOST: in bepaalde situaties wordt het Auto Layout-systeem mogelijk niet automatisch ingeschakeld voor een weergave. Om dit probleem te omzeilen, negeert u de vereistConstraintBasedLayout class-methode in uw weergave en retourneert JA uit uw implementatie.
      • Er verschuift meer verantwoordelijkheid naar de app en de app-afgevaardigde. Nu kunnen iOS-containers (zoalsUINavigatieController) raadplegen hun kinderen niet om te bepalen of ze moeten autoroteren. Standaard zijn de ondersteunde interface-oriëntaties van een app en een weergavecontroller ingesteld op UIInterfaceOrientationMaskAll voor het iPad-idioom enUIInterfaceOriëntatieMaskerAllesMaarOnderstebovenvoor het iPhone-idioom.
      • De ondersteunde interface-oriëntaties van een weergavecontroller kunnen in de loop van de tijd veranderen. Zelfs de ondersteunde interface-oriëntaties van een app kunnen in de loop van de tijd veranderen. Het systeem vraagt ​​zowel de bovenste weergavecontroller voor volledig scherm (meestal de rootviewcontroller) naar de ondersteunde interface-oriëntaties wanneer het apparaat draait of wanneer een weergavecontroller de modale presentatiestijl op volledig scherm wordt gepresenteerd. Bovendien worden de ondersteunde oriëntaties alleen opgehaald als deze weergavecontroller JA retourneert vanuit de methode ShouldAutorotate. Het systeem snijdt de ondersteunde oriëntaties van de viewcontroller met de ondersteunde oriëntaties van de app (zoals bepaald door het Info.plist-bestand of de app-afgevaardigden).toepassing: ondersteundInterfaceOrientationsForWindow:methode) om te bepalen of er moet worden geroteerd.
      • Het systeem bepaalt of een oriëntatie wordt ondersteund door de waarde te kruisen die door de app wordt geretourneerdondersteundInterfaceOrientationsForWindow:methode met de waarde die wordt geretourneerd door deondersteunde interface-oriëntaties methode van de bovenste volledig schermcontroller.
      • De setStatusBarOriëntatie:geanimeerd:methode is niet volledig verouderd. Het werkt nu echter alleen als deondersteunde interface-oriëntaties De methode van de bovenste weergavecontroller voor volledig scherm retourneert 0. Dit legt de verantwoordelijkheid om ervoor te zorgen dat de oriëntatie van de statusbalk consistent is in de handen van de beller.
      • Bekijk voor compatibiliteit controllers die nog steeds deShouldAutorotateToInterfaceOrientatie: methode krijgt niet het nieuwe autorotatiegedrag. (Met andere woorden, ze vallen niet terug op het gebruik van de app, de app-gedelegeerde of het bestand Info.plist om de ondersteunde oriëntaties te bepalen.) In plaats daarvan wordt de methode ShouldAutorotateToInterfaceOrientation: gebruikt om de informatie te synthetiseren die door deondersteunde interface-oriëntaties methode.
    • De willRotateToInterfaceOriëntatie:duur:,willAnimateRotationToInterfaceOrientation:duration: endidRotateFromInterfaceOriëntatie: methoden worden niet langer aangeroepen op een weergavecontroller die een presentatie op volledig scherm over zichzelf maakt, bijvoorbeeld door aan te roepenpresentViewController:geanimeerd:voltooiing:.In iOS 6 wordt de bekijkWillUnload en bekijkDidUnload methoden van UIViewController zijn nu verouderd. Als u deze methoden gebruikte om gegevens vrij te geven, gebruikt u de didReceiveMemoryWaarschuwingmethode in plaats daarvan. U kunt deze methode ook gebruiken om verwijzingen naar de weergave van de viewcontroller vrij te geven als deze niet wordt gebruikt. Voordat u dit doet, moet u testen of de weergave zich niet in een venster bevindt.
      • Zorg ervoor dat uw apps deze methoden niet gebruiken om de lay-out van subweergaven te beheren. In plaats daarvan zouden ze die van de viewcontroller moeten gebruiken viewWillLayoutSubviewsen pas de lay-out aan met behulp van de rechthoek van de weergave.
    • OPGELOST: Het aanroepen van een van de toegewezen tekenreeksmethoden zonder een waarde op te geven voor de NSFontAttributeName attribuut zal waarschijnlijk een uitzondering genereren. De oplossing is om een ​​waarde in te stellen voor de sleutel NSFontAttributeName voordat u eenNSAttributedString voorwerp.
    • Waarden instellen voor de schaduwOffset or schaduwKleur eigenschappen van een UILabel-object, waarvan toegeschrevenTekst eigenschap een geldige toegeschreven tekenreeks bevat, wordt niet ondersteund. Gebruik deNSShadowAttributeName attribuut van de toegeschreven string om in plaats daarvan de schaduw in te stellen.
    • Vanwege compatibiliteitsproblemen is deNSBaselineOffsetAttributeName kenmerk wordt niet langer ondersteund in iOS 6.
    • De NSTextAlignmentNatuurlijk waarde wordt niet ondersteund en genereert een uitzondering bij gebruik met de tekstuitlijning eigenschap van UILabel of geleverd als de uitlijningsparameter voor dedrawInRect:withFont:lineBreakMode:uitlijning: methode van NSString.
    • De setContentStretch: methode van UIView is verouderd in deze bètaversie. Om hetzelfde effect te bereiken, gebruikt u de resizableImageWithCapInsets: methode van UIImage en geef de afbeelding weer met a UIImageView.
    • De resizableImageWithCapInsets: De methode van UIImage wijzigt het formaat van afbeeldingen effectief door naast elkaar te plaatsen. Als prestatie-optimalisatie wordt er gebruik gemaakt van uitrekken in plaats van tegelen wanneer de gebruiker het verschil niet kan zien, bijvoorbeeld wanneer een enkele kolom of rij wordt uitgerekt. Maar onder bepaalde omstandigheden wil je misschien een bepaald deel van een afbeelding daadwerkelijk uitrekken. In iOS 6 kan de aanroeper met de resizableImageWithCapInsets:resizingMode:-methode een modus voor het wijzigen van de grootte van de afbeelding opgeven.
    • De UICollectionViewLayout klasse is veranderd: OPGELOST: In iOS 6 is een bug opgelost waarbij UIWebView.isLoading op NO was ingesteld voordat het hoofdframe klaar was met laden. Nu wordt UIWebView.isLoading ingesteld op NO wanneer het hoofdframe klaar is met laden.
      • De klasse ondersteunt nu de aanpassing van de animaties die tijdens de rotatie zijn gemaakt. De namen van methoden voor het aanpassen van invoeg- en verwijderanimaties zijn ook veranderd, zodat dezelfde hooks zowel voor rotaties als voor invoegingen en verwijderingen kunnen worden gebruikt.
      • De klasse heeft enkele methodenamen gewijzigd. In het bijzonder wordt naar decoratieweergaven niet langer verwezen met 'hergebruiksidentificatie', maar eerder met 'elementsoort'. Apps die decoratieve weergaven gebruiken, moeten hun code aanpassen en opnieuw opbouwen om hieraan tegemoet te komen.
    • De onderrand van een UILabel weergave verschilt nu van de basislijn. Voorheen interpreteerde de automatische lay-out de onderkant van een UILabel als hetzelfde als de basislijn. Hoewel dit in veel gevallen handig was, veroorzaakte het problemen als u de bovenrand van het ene label tegen de onderrand van een ander label wilde plaatsen. In een dergelijk scenario zou het onderste label het bovenste label overlappen, en zouden afstammelingen van het bovenste label tegen opstijgende labels van het onderste label kunnen botsen. De automatische lay-out interpreteert UILayoutAttributeBottom nu als de onderkant van het tekstvak (ervan uitgaande dat het label niet groter is dan de intrinsieke inhoudsgrootte) en UILayoutAttributeBaseline als de basislijn van de tekst. Als u al code heeft gemaakt voor het opmaken van labels volgens het onderste of middelste punt, zal uw tekst een beetje verschuiven en moet u uw beperkingen aanpassen.
    • Apps met tabelweergaven in hun nib- of storyboard-bestanden, en die zijn gebouwd met eerdere versies van iOS 6 bèta, vereisen een schone build met bèta 3 en nieuwer.
    • Hier volgen enkele opmerkingen over ondersteuning voor automatische lay-outUIScrollView:
      • Over het algemeen beschouwt de automatische indeling de boven-, linker-, onder- en rechterrand van een weergave als de zichtbare randen. Dat wil zeggen: als u een weergave vastzet aan de linkerrand van de superview, zet u deze feitelijk vast op de minimale x-waarde van de grenzen van de superview. Het wijzigen van de grensoorsprong van de supervisie verandert de positie van de weergave niet.
      • De klasse UIScrollView scrollt door de inhoud door de oorsprong van de grenzen te wijzigen. Om dit te laten werken met automatische lay-out, betekenen de betekenis van de boven-, linker-, onder- en rechterranden binnen een schuifweergave nu de randen van de inhoudsweergave.
      • De beperkingen op de subweergaven van de schuifweergave moeten resulteren in een op te vullen grootte, die vervolgens wordt geïnterpreteerd als de inhoudsgrootte van de schuifweergave. (Dit moet niet worden verward met deintrinsiekeinhoudgrootte (methode die wordt gebruikt voor automatische lay-out.) Om het frame van de schuifweergave met automatische indeling te vergroten, moeten de beperkingen expliciet zijn met betrekking tot de breedte en hoogte van de schuifweergave, of moeten de randen van de schuifweergave worden gekoppeld aan weergaven buiten de substructuur.
      • Houd er rekening mee dat u ervoor kunt zorgen dat een subweergave van de schuifweergave zweeft (niet schuift) over de andere schuifinhoud door beperkingen te creëren tussen de weergave en een weergave buiten de substructuur van de schuifweergave, zoals de superview van de schuifweergave.
      • Hier zijn enkele voorbeelden van hoe u de schuifweergave kunt configureren:
        • Gemengde aanpak:
          1. Plaats en vergroot de grootte van uw scrollweergave met beperkingen die buiten de scrollweergave vallen, dat wil zeggen: devertaaltAutoresizingMaskIntoConstraintseigenschap is ingesteld op NEE.
          2. Creëer een vlakte UIViewinhoudsweergave voor uw scrollweergave die de grootte heeft die u wilt dat uw inhoud heeft. Maak er een subweergave van de schuifweergave van, maar laat het doorgaan met het vertalen van het masker voor het automatisch aanpassen van de grootte in beperkingen:
  • UIView *contentView = [[UIView toewijzing]
  •     initWithFrame:CGRectMake(0,0,contentWidth,contentHeight)];
  • [scrollView addSubview:contentView];
  • // Verander de inhoud NIET.View vertaaltAutoresizingMaskIntoConstraints,
  • // standaard ingesteld op JA;
      1. Stel de inhoudsgrootte van de scrollweergave in zodat deze overeenkomt met de grootte van de inhoudsweergave:
  • [scrollView setContentSize:CGMakeSize(contentWidth,contentHeight)];
      1. Maak de weergaven die u in de inhoudsweergave wilt plaatsen en configureer de beperkingen ervan zodat ze binnen de inhoudsweergave worden geplaatst. U kunt ook een substructuur voor de weergave maken om naar de schuifweergave te gaan, uw beperkingen instellen en desysteemLayoutSizeFittingSize:methode (met deUILayoutFittingCompressiegrootteoptie) om de grootte te vinden die u wilt gebruiken voor de grootte van uw inhoudsweergave en deinhoudGrootteeigenschap van de schuifweergave.
    • Pure automatische lay-outbenadering:
      1. In dit gevalvertaaltAutoresizingMaskIntoConstraintsmoet voor alle betrokken weergaven op NEE worden ingesteld.
      2. Positioneer en vergroot de grootte van uw scrollweergave met beperkingen buiten de scrollweergave.
      3. Gebruik beperkingen om de subweergaven binnen de schuifweergave in te delen, waarbij u erop moet letten dat de beperkingen aan alle vier de randen van de schuifweergave gelden en niet afhankelijk zijn van de schuifweergave om hun grootte te bepalen. Een eenvoudig voorbeeld is een grote afbeeldingsweergave, die heeft een intrinsieke inhoudsgrootte die is afgeleid van de grootte van de afbeelding. In debekijkenDidLoadmethode van uw weergavecontroller, zou u code als de volgende opnemen:
      1. Dit zou u een schuifweergave opleveren waarvan het formaat wordt aangepast naarmate de weergave van de weergavecontroller wordt vergroot (zoals bij apparaatrotatie), en de afbeeldingsweergave zou een scrollende subweergave zijn. U hoeft de inhoudsgrootte van de scrollweergave niet in te stellen.

Safari en WebKit

  • WebKit op iOS ondersteunt nu de methoden requestAnimationFrame en cancelAnimationFrame in JavaScript, zoals hier beschrevenhttp://www.w3.org/TR/animation-timing/.Het standaard cachequotum voor apps is verhoogd van 5 MB naar 25 MB.
    • Houd er rekening mee dat, omdat de specificatie nog steeds de status Working Draft heeft, deze methoden het voorvoegsel webkit hebben, dus window.webkitRequestAnimationFrame, window.webkitCancelAnimationFrame.
  • De JPEG-subsamplingdrempel is verhoogd van 2 MP (megapixels) naar 5 MP op alle ondersteunde hardware, behalve iPhone 3GS en iPod touch (4e generatie).
  • Er is ondersteuning toegevoegd voor tags in webformulieren. Gebruikers kunnen bestaande foto's en video's uit hun fotobibliotheek uploaden of een foto of video maken met de camera. Voorheen was dit formulierbeheer altijd uitgeschakeld.
  • Met Safari 6.0 op OS X kunnen ontwikkelaars nu de Web Inspector (webontwikkelingstool) gebruiken met aangesloten iOS-apparaten en iOS Simulator. Ontwikkelaars kunnen de Web Inspector gebruiken om fouten in Safari en de UIWebView class in hun eigen apps gebouwd en uitgevoerd vanuit Xcode. Dit vervangt de Debug Console-banner in Safari.
  • In iOS 6 en hoger kunnen webgegevens (SQL Web Storage en LocalStorage) van aUIWebView object kan worden opgeslagen in een map waarvan een back-up wordt gemaakt. Als u het maken van een back-up van deze gegevens wilt inschakelen, stelt u de WebKitStoreWebDataForBackup-sleutel in op JA in de standaardgebruikersinstellingen van uw app. Dit mag alleen worden gedaan als uw app afhankelijk is van webinhoudsgegevens die niet opnieuw kunnen worden geladen. Als uw UIWebView-object koppelingen naar willekeurige webinhoud opent, moet deze sleutel worden ingesteld op NEE. Als u de waarde van deze sleutel omschakelt, blijven de bestaande webweergavegegevens behouden.
  • In iOS 6 en hoger registreert Safari zich niet langer voor de algemene feed: RSS/ATOM-schema. Apps die dit soort feeds kunnen bekijken, worden aangemoedigd zich voor dat URL-schema te registreren.
  • WebKit maakt niet langer altijd hardwareversnelde lagen voor elementen met de optie -webkit-transform: behouden-3d. Auteurs moeten stoppen met het gebruik van deze optie als een manier om hardwareversnelling te krijgen.
  • Experimentele CSS3 Flexbox-ondersteuning wordt uitgeschakeld. Schakel over van het gebruik van -webkit-flexbox en -webkit-inline-flexbox naar -webkit-box en -webkit-inline-box.
  • Vanaf iOS 6 zullen ingebedde YouTube-URL's in de vorm van http://www.youtube.com/watch?v=oHg5SJYRHA0 niet meer werken. Deze URL's zijn bedoeld om de video op de YouTube-site te bekijken, niet om deze in webpagina's in te sluiten. In plaats daarvan wordt het te gebruiken formaat beschreven inhttps://developers.google.com/youtube/player_parameters.
  • In iOS 6 is de eigenschap keyboardDisplayRequiresUserAction toegevoegd aan de klasse UIWebView. De eigenschap is standaard ingesteld op YES, wat betekent dat het aanroepen van focus() op een formulierelement het toetsenbord niet zal weergeven. Door de eigenschap te wijzigen in NO, zal een JavaScript-aanroep van focus() op een formulierelement het element focussen en automatisch het toetsenbord weergeven.
  • Vanaf iOS 6 zal het aanroepen van focus() op een formulierelement in een webapp het element focussen.