iOS 6 beta 3 – här är allt nytt + changelog (ständigt uppdaterad artikel) x14

  Mer än en timme nu Apple lanserades iOS beta 6 3 för utvecklare av applikationer för App Store och i den inkluderade en rad ändringar, de flesta av dem subtila, tyvärr. I den här artikeln har vi listat de viktigaste nyheterna, men också den officiella ändringsloggen publicerad av företaget.

1. En ny meny för kartapplikationen, igen i den här artikeln har du detaljerna.

2. Systemet som varnar dig när en applikation begär åtkomst till dina data från adressboken har förbättrats.

3. Många av problemen som Apple TV hade med Netflix-applikationen, med fjärrkontrollen, med bildspelen eller med YouTube-applikationen har lösts.

4. Fixade problemet där knapparna Acceptera/Avböja för FaceTime-samtal inte visades.

5. På iPad-surfplattan är nu Safaris historik, favoritlista och läsmeny tillgängliga på en enda flik.

6. Sekretesssektionen innehåller nu ikoner för varje separat kategori.

7. Siri är svårare att svara på frågor, men rösten modifierades något av Apple.

8. Användare har möjlighet att registrera e-postadresser med domänen @icloud.com.

9. Den delade fotoströmmen når även iPhone 3GS och iPod Touch.

10. VIP-e-postfunktionen når även iPod Touch.

11. Siri kan öppna AssistiveTouch-menyn.

12. Mailapplikationen har en ny knapp för att arkivera e-postmeddelanden.

13. Maps-applikationen ger information om trafik i vissa länder.

14. När du uppdaterar en applikation kommer knappen Uppdateringar i App Store att visa dig en indikator om hur applikationsinstallationen fortskrider.

 

Anteckningar och kända problem

Följande problem gäller att använda iOS SDK 6.0 för att utveckla kod.

adressbok

  • När en app är i ett nytt sekretessläge och försöker presentera enABNewPersonViewController, kan användaren inte avvisa den vykontrollanten korrekt även om de tillåter åtkomst till kontakter. Användaren måste tvinga avsluta appen och starta om.
  • Begär åtkomst till kontakter:
    • Användare kan bevilja eller neka åtkomst till kontaktdata per app. För att begära åtkomst till kontaktdata, ring funktionen ABAddressBookRequestAccessWithCompletion efter att ha anropat ABAddressBookCreateWithOptions fungera. ABAddressBookRequestAccessWithCompletion-funktionen blockerar inte appen medan användaren ombeds att bevilja eller neka åtkomst. Tills åtkomst har beviljats, ABadressbokrefobjektet kommer inte att innehålla några kontakter och alla försök att ändra kontakter misslyckas med en kABOperationNotPermittedByUserErrorfel. Användaren uppmanas endast första gången åtkomst begärs; alla efterföljande anrop till ABAddressBookCreateWithOptions kommer att använda de befintliga behörigheterna. Färdigställandehanteraren anropas i en godtycklig kö. Om ABAddressBookRef-objektet används i hela appen, måste all användning skickas till samma kö för att använda ABAddressBookRef på ett trådsäkert sätt.
  • Kontrollerar åtkomstbehörighetsstatus:
    • En app kan använda API:et för auktoriseringsstatus för att kontrollera om den kan komma åt kontakter, kalendrar, påminnelser eller fotobibliotek. Detta API är oberoende av API:et för begäran om åtkomst och kommer inte att uppmana användaren att bevilja eller neka åtkomst. Med detta API kan en app justera visningen av dess UI-element som skulle komma åt dataklassen. Till exempel, om åtkomst till kontakter är auktoriserad eller inte fastställt, kan en UI-knapp för att välja en kontakt visas.
    • För adressbok, anrop funktionen ABAddressBookGetAuthorizationStatus. För Event Kit, anropa authorizationStatusForEntityType: klassmetoden förEKEventStore. För Assets Library, anropa authorizationStatus-klassmetoden för ALAssetsLibrary. Innebörden av statusvärdena som returneras är följande:
      • Auktoriseringsstatus ej fastställd - Användaren har ännu inte gjort ett val angående om den här appen kan komma åt dataklassen.
      • Auktoriseringsstatus Begränsad - Den här appen har inte behörighet att komma åt dataklassen. Användaren kan inte ändra denna apps status, möjligen på grund av aktiva begränsningar som föräldrakontroller som finns på plats.
      • Auktoriseringsstatus nekad - Användaren nekade uttryckligen åtkomst till dataklassen för den här appen.
      • Auktoriseringsstatus Auktoriserad – Den här appen har behörighet att komma åt dataklassen.

Apple TV

  • I vissa fall kan skärmen visa fel upplösning. Starta om din Apple TV för att återställa den till rätt upplösning.
  • FIXAT: Netflix-videor kanske inte återupptas där du slutade.
  • FIXAT: Historiklistan i YouTube-appen rensas när du avslutar och öppnar appen igen.
  • Apple TV kan vara långsam att svara medan en nedladdning pågår i bakgrunden.
  • Apple TV kan starta om när du använder Remote-appen.
  • Apple TV kan starta om när systemspråket ändras.
  • Fotoström laddas inte när du loggar in en andra gång. Starta om Apple TV för att lösa problemet.
  • Musik spelas inte upp under bildspel.
  • Nya beteenden:
    • Välj fjärrhögtalare i Inställningar > AirPlay.
    • Ställ in en skärmkod för AirPlay i Inställningar > AirPlay.
    • Spara flera iTunes Store-konton i Inställningar > iTunes Store.
    • Tryck och håll ned knappen Välj för att ordna om ikonerna på huvudmenyn.
    • Dölj huvudmenyikonerna i Inställningar > Allmänt > Föräldrakontroll.

Hallå

  • Smakämnen NSNetService class och CFNetService API:er inkluderar inte P2P-gränssnitt som standard. För att bläddra, registrera eller lösa tjänster över P2P-gränssnitt måste en app använda Bonjour DNSService*() API:er som anges nedan.
  • Att ställa in parametern interfaceIndex till kDNSServiceInterfaceIndexAlla i följande API kommer inte att inkludera P2P-gränssnitt som standard. För att inkludera P2P-gränssnitt måste du nu ställa in flaggan kDNSServiceFlagsIncludeP2P när du använder kDNSServiceInterfaceIndexAny eller ställa in interfaceIndex till kDNSServiceInterfaceIndexP2P. De berörda API:erna har:
    • DNSServiceBrowse
    • DNSServiceRegister
    • DNSServiceResolve
    • DNSServiceRegisterRecord
    • DNSServiceQueryRecord

Ordbok

  • Det finns ett känt problem med ordböcker när man försöker definiera ett ord på något annat språk än engelska eller japanska. När referensbiblioteket presenteras får användaren möjlighet att ladda ner en ordbok - den nedladdningen kanske inte börjar. Användaren kan trycka utanför popover-fönstret på en iPad eller trycka på "Klar"-knappen på iPhone eller iPod touch för att avvisa nedladdningsbegäran.

Event Kit

  • Begär åtkomst till kalendrar eller påminnelser:
    • Användare kan bevilja eller neka åtkomst till händelse- och påminnelsedata per app. För att begära tillgång till händelse- och/eller påminnelsedata, ring requestAccessToEntityType:completion:-metoden för EKEventStore. Detta kommer inte att blockera appen medan användaren ombeds att bevilja eller neka åtkomst. Tills åtkomst har beviljats ​​för en enhetstyp kommer händelsearkivet inte att innehålla några kalendrar för den enhetstypen, och alla försök att spara data kommer att misslyckas.
    • Användaren kommer endast att bli tillfrågad första gången åtkomst begärs; alla efterföljande instansieringar av EKEventStore kommer att använda de befintliga behörigheterna. Färdigställandehanteraren anropas i en godtycklig kö.

Game Center

  • När du skapar ett nytt Game Center-konto i appen på iPad, dyker popover för att välja månad för ditt födelsedatum upp utan innehåll att välja.
  • Autentiseringsmetoden för GKLocalPlayer har tagits bort. Autentisering startar automatiskt när slutförandehanteraren är inställd.

icloud

  • När du skapar ett iCloud-konto kan du använda valfritt e-postbaserat Apple-ID, eller så kan du använda ditt befintliga iCloud-konto. Om du hade ett MobileMe-konto som du ännu inte har flyttat till iCloud måste du först flytta det genom att besökahttp://me.com. Att flytta till iCloud är endast tillgängligt under en begränsad tid. Logga in på ett MobileMe-konto stöds inte i iOS 6. Provisioneringsprofiler måste vara aktiverade för iCloud i iOS Provisioning Portal. För att aktivera en provisioneringsprofil för iCloud, navigera till avsnittet App ID i iOS Provisioning Portal och konfigurera ditt App ID för iCloud. När du har aktiverat app-ID för iCloud, återskapa dina provisioneringsprofiler för att aktivera dem för iCloud.
    • icloud.com-e-postadresser är nu tillgängliga för iCloud-postanvändare. Användare som registrerar sig för nya Apple-ID:n, eller aktiverar Mail på sitt iCloud-konto för första gången, får automatiskt en @icloud.com-e-postadress istället för en me.com-e-postadress. iCloud-användare med @me.com-adresser som har använts med iOS 6 beta 3 kommer att få en @icloud.com-e-postadress som matchar deras @me.com-adress.
    • icloud.com e-post kan inte skickas från www.icloud.com. Användare bör använda http://beta.icloud.com vid denna tidpunkt om de vill skicka e-post från sin icloud.com-adress med en webbläsare.
  • Smakämnen setSortDescriptors: metoden för NSMetadataQuery stöds inte.
  • I iOS 6 kan filer som är skyddade via dataskydd inte användas med iCloud Storage API:er.
  • Filnamn är skiftlägesokänsliga i OS X men skiftlägeskänsliga i iOS. Detta kan leda till problem när du delar filer mellan de två plattformarna med iCloud. Du bör vidta åtgärder på iOS för att undvika att skapa filer vars namn endast skiljer sig från fall till fall.
  • Beteendet för samordnade läsoperationer på iCloud-dokument har ändrats. I tidigare iOS-versioner, när din app utförde en koordinerad läsoperation på en fil eller ett paket och iCloud-demonen märkte att det fanns en nyare version av objektet, blockerades den koordinerade läsoperationen tills den nyare versionen av objektet laddades ner och skrivs till disken.
    Från och med iOS 6 beta 3, när du startar en koordinerad läsoperation på en fil eller ett paket som du redan har en lokal version för, kommer den koordinerade läsningen att beviljas så snart som möjligt, och den nya versionen, om någon, kommer att laddas ner i bakgrunden. Detta samtal blockeras endast av nedladdningsskäl om du inte har någon version av filen tillgänglig lokalt.
    Dessutom, när filen är i konflikt, kommer iCloud-demonen inte att vänta tills den har alla konfliktförlorare av filen tillgängliga för att göra filen tillgänglig för din app. Det kommer att göra de olika versionerna av den konfliktfyllda filen tillgängliga så snart det kan. Din app kan använda den befintliga filkoordineringen och UIDokumentåteruppringningar som ska meddelas när konfliktförlorarna har laddats ner och är tillgängliga.

iMessage och FaceTime

  • FIXAT: Knapparna Svara och Avvisa saknas när du tar emot samtal i liggande riktning.

iTunes

  • iTunes 10.6.3 krävs för iOS SDK 6.0.
  • FIXAT: När du återställer från en iTunes-säkerhetskopia, dyker enheten upp som en ny enhet efter omstart. Om det händer, ställ in enheten som en "ny enhet" när du uppmanas att återställa för andra gången. All data borde ha återställts korrekt men synkroniseringsinställningar inklusive apparrangemang i iTunes går förlorade.

kartor

  • I iOS 6 och senare är Map Kit byggt på en ny infrastruktur som är värd för Apple. Tidigare iOS-versioner kommer att fortsätta att använda Googles tjänst.FIXAT: Om Maps inte körs i bakgrunden visas felet "Maps kan inte ansluta till internet" när det startas från en app från tredje part.
    • API-kompatibilitet kommer att bibehållas (se kända problem nedan).
    • Kartor stöds nu i simulatorn.
    • Kartdata kommer att fortsätta att utvecklas – endast en begränsad mängd högupplösta satellitbilder är för närvarande tillgänglig.
  • FIXAT: Om Maps ännu inte har lanserats, visas inte den aktuella platsen när den startas från en app från tredje part.
  • Routningsappar som inte anger en täckningsfil under utvecklingen kommer alltid att visas i sökresultaten för Maps-dirigering.
  • Testning och felsökning av täckningsfiler för routing av appar stöds endast under utveckling genom Xcode "Run"-arbetsflödet. (Du kan ange täckningsfilen för ett givet körschema med hjälp av rutan Alternativ i avsnittet Kör i schemaredigeraren.) Appar som arkiveras och distribueras (utanför App Store) till enheter kommer inte att ha åtkomst till appens täckningsfiler .
  • Maps zoomar inte in på den aktuella platsen när den startas från en app från tredje part.

tidningskiosk

  • Endast enkla http-nedladdningar fungerar med Newsstand.

Passbook

  • FIXAT: En flygplansikon visas mellan ursprunget och destinationen för alla transittyper.
  • Fältet "Beskrivning" är nu ett obligatoriskt fält för ett godkänt. Alla pass som skapats utan det kommer inte att valideras och kommer inte att intas.
  • FIXAT: Passbook-databasen har återställts. Du måste lägga till dina pass igen.
  • Passbook i simulatorn kräver inte längre https/ssl när man använder en webServiceURL när man tar in ett pass.
  • Det går inte att visa boardingkort på låsskärmen.

Påminnelser

  • FIXAT: Det finns problem när du lägger till och redigerar påminnelser i appen Påminnelser på iPhone-enheter:
    • Knappen Klar saknas när du lägger till en ny påminnelse.
    • Appen kraschar när du trycker på knappen Redigera för att redigera en påminnelse.

Säkerhet

  • I iOS 5 stöds inte signering av ett certifikat med en MD5-signatur. Se till att certifikat använder signaturalgoritmer baserade på SHA1 eller SHA2.
  • I iOS 6 finns det förbättrade integritetskontroller för kalendrar, påminnelser, kontakter och foton.
    • Användare kommer att se åtkomstdialoger när en app försöker komma åt någon av dessa datatyper. Användaren kan slå på och av åtkomst i Inställningar > Sekretess.
    • Utvecklare kan ställa in en "syfte"-sträng för varje klass av isolerade data. iOS visar denna sträng för användare för att hjälpa dem att förstå varför deras data efterfrågas. Dessa strängar kan läggas till med hjälp av Xcodes projektredigerare, på fliken Info. De relevanta nyckelnamnen börjar med strängen "Privacy -".
    • Det finns ändringar i ramverken för Event Kit och Adressbok för att hjälpa utvecklare med den här funktionen.

Simulator

  • Bekräftelsepanelen för appradering tar ett tag innan den visas i iOS Simulator.
  • FIXAT: Tryck på köpknappen i vyn av enSKStoreProductViewController objekt i iOS Simulator gör att appen kraschar.
  • Inga sekretessvarningar visas i iOS Simulator för appar som har åtkomst till foton, kontakter, kalender och påminnelser.
  • Nedladdning av värdinnehåll för köp i appar i iOS Simulator stöds inte.
  • När du försöker spela upp ett MP3-ljud i simulatorn kommer du att höra ett poppande ljud istället.
  • FIXAT: Att använda iOS 5.1 SDK med iPad-profilen (Retina) kommer att resultera i en SpringBoard-krasch. iOS 5.1 SDK fungerar med alla andra profiler och iPad (Retina) SDK fungerar med iOS 6.0 SDK.
  • FIXAT: Annonser av typen ADAdTypeMediumRectangle visas inte i iPad Simulator.

Delad fotoström

  • Användaren måste gå till Inställningar > iCloud för att säkerställa att de får meddelanden om delad fotoström.
  • För att dela en fotoström med iOS 6 beta måste du bjuda in någon som använder sin iCloud-e-postadress annars kommer de inte att få inbjudan.
  • Om du uppgraderar från iOS 6 beta 1 till beta 2 kommer din enhet att ladda ner alla dina delade fotoströmmar igen.
  • Funktionen för delad fotoström är inställd på AV vid uppdatering från iOS 6 beta 1 till en senare version. Standardinställningen ska vara PÅ.
  • Om du stänger av delade fotoströmmar kan kameran inte svara. Om du tvingas stänga av kameran löser du problemet.

Social hållbarhet

  • Weibo visas i appen Inställningar endast om ett kinesiskt tangentbord är aktiverat.
  • Smakämnen requestAccessToAccountsWithType:withCompletionHandler: Metoden för ACAccountStore är nu utfasad. För att komma åt användarkonton, användrequestAccessToAccountsWithType:options:completion: metod. I alternativparametern för den här nya metoden, skicka noll för att komma åt Twitter- och Weibo-konton. För att komma åt Facebook-konton, skicka en ordbok med följande nycklar (som finns dokumenterade i ACAccountStore.h): Du bör inte längre lägga till denna ordbok i din app Info.plist-fil, som krävdes i beta 1.
    • ACFacebookAppIdKey
    • ACFacebookPermissionsKey
    • ACFacebookPermissionGroupKey

Trampolin

  • FIXAT: Efter att ha återställt en enhet i iTunes eller utfört ett "Radera allt innehåll och inställningar" kanske den aktuella bakgrunden inte visas förrän enheten har startat om en gång.

Statusfält

  • Det är nu möjligt att ställa in statusfältets nyansparametrar i din app Info.plist-fil. Du kan göra detta för att säkerställa att statusfältets färg matchar navigeringsfältets färg på din app under uppstart. För att ställa in statusfältets nyans, lägg till UIStatusBarTintParameters-nyckeln till din Info.plist-fil. Värdet på denna nyckel är en ordbok med lämpliga värden som beskriver navigeringsfältet som din app har vid uppstart. Inuti ordboken ska nyckeln UINavigationBar finnas, vars värde också är en ordbok. Den ordboken innehåller den ursprungliga navigeringsradens stil (med Style-tangenten) och om den är genomskinlig (med Translucent-tangenten). Om navigeringsfältet använder dem kan du också ange dess nyansfärg (med Nyansfärg-tangenten), eller namnet på dess anpassade bakgrundsbild (med Bakgrundsbild-tangenten).

UIKit

    • I iOS 5.1 är UISplitViewController klass antar den glidande presentationsstilen när den vänstra vyn presenteras (tidigare bara sett i Mail). Den här stilen används när presentationen initieras antingen av det befintliga barknappsobjektet som tillhandahålls av delegatmetoderna eller genom en svepgest i den högra vyn. Inget ytterligare API-antagande krävs för att erhålla detta beteende, och alla befintliga API, inklusive den för UIPopoverController-instansen som tillhandahålls av delegaten, kommer att fortsätta att fungera som tidigare. Om gesten inte går att stödja i din app, ställ in presentsWithGesture egenskapen för din split view-kontroller till NO inaktiverar gesten. Att inaktivera gesten avråds dock eftersom användningen bevarar en konsekvent användarupplevelse i alla appar.
    • FIXAT: I iOS 6 har ändringar införts så att du inte längre behöver ställa in en delegat och implementera en metod för Single-Finger och Single-Tap gestigenkännare, i ett försök att få dem att fungera bra med UIControl föremål.
    • I iOS 6 och senare är UIWebView klass målar dess innehåll asynkront.
    • FIXAT: Utvecklare som testar Auto Layout med UIScrollViewobjekt kan märka jitter i rullningsindikatorerna på enheter med Retina-skärmar.
    • Autorotation förändras i iOS 6. I iOS 6 ärbör AutorotateToInterfaceOrientation: metoden för UIViewController är utfasad. I dess ställe bör du användagränssnittsorientering som stöds och shouldAutorotate-metoder FIXAT: I vissa situationer kanske det automatiska layoutsystemet inte aktiveras automatiskt för en vy. För att komma runt problemet, åsidosätt kräverConstraintBasedLayout klassmetoden i din uppfattning och returnera JA från din implementering.
      • Mer ansvar flyttas till appen och appombudet. Nu har iOS-behållare (som t.exUINavigationController) rådfråga inte sina barn för att avgöra om de ska autorotera. Som standard är en app och en vystyrenhets gränssnittsorientering som stöds inställd på UIInterfaceOrientationMaskAll för iPad idiom ochUIInterfaceOrientationMaskAllButUpsideDownför iPhone idiom.
      • En vystyrenhets gränssnittsorientering som stöds kan ändras över tiden. Även gränssnittsorienteringarna för en app som stöds kan ändras över tiden. Systemet frågar både den översta fullskärmskontrollern (vanligtvis rotvykontrollern) om dess gränssnittsorientering som stöds när enheten roterar eller närhelst en vykontroller presenteras med modal presentationsstil för helskärm. Dessutom hämtas de stödda orienteringarna endast om denna vykontroller returnerar YES från sin shouldAutorotate-metod. Systemet korsar vykontrollerns stödda orienteringar med appens stödda orienteringar (som bestäms av Info.plist-filen eller appdelegatensapplication:supportedInterfaceOrientationsForWindow:metod) för att avgöra om den ska roteras.
      • Systemet avgör om en orientering stöds genom att skära värdet som returneras av appenssupportedInterfaceOrientationsForWindow:metod med värdet som returneras avgränssnittsorientering som stöds metoden för den översta fullskärmskontrollenheten.
      • Smakämnen setStatusBarOrientation:animated:metoden är inte helt avskaffad. Men nu fungerar det bara omgränssnittsorientering som stöds metoden för den översta fullskärmskontrollern returnerar 0. Detta lägger ansvaret för att se till att statusfältets orientering är konsekvent i händerna på den som ringer.
      • För kompatibilitet, se kontroller som fortfarande implementerarbör AutorotateToInterfaceOrientation: metoden får inte de nya autorotationsbeteendena. (Med andra ord, de faller inte tillbaka till att använda appen, app-delegaten eller Info.plist-filen för att bestämma de riktningar som stöds.) Istället används metoden shouldAutorotateToInterfaceOrientation: för att syntetisera informationen som skulle returneras avgränssnittsorientering som stöds metod.
    • Smakämnen willRotateToInterfaceOrientation:duration:,willAnimateRotationToInterfaceOrientation:duration:ochdidRotateFromInterfaceOrientation: metoder anropas inte längre på någon vykontroller som gör en helskärmspresentation över sig själv – till exempel genom att anropapresentViewController:animated:completion:.I iOS 6 är viewWillUnload och viewDidUnload metoder för UIViewController är nu utfasade. Om du använde dessa metoder för att släppa data, använd didReceiveMemoryWarningmetod istället. Du kan också använda den här metoden för att frigöra referenser till vykontrollantens vy om den inte används. Du måste testa att vyn inte är i ett fönster innan du gör detta.
      • Du bör se till att dina appar inte använder dessa metoder för att hantera layouten för några undervyer. Istället bör de använda vykontrollantens viewWillLayoutSubviewsmetod och justera layouten med hjälp av vyns gränsrektangel.
    • FIXAT: Anropar någon av de tillskrivna strängritningsmetoderna utan att ange ett värde för NSFontAttributeName attribut kommer sannolikt att skapa ett undantag. Lösningen är att ställa in ett värde för NSFontAttributeName-nyckeln innan du ritar eller dimensionerar enNSAttributedString objekt.
    • Inställningsvärden för shadowOffset or shadowColor egenskaper för ett UILabel-objekt, vars tillskrivenText egenskapen innehåller en giltig tillskriven sträng, stöds inte. AnvändNSShadowAttributeName attribut för den tillskrivna strängen för att ställa in skuggan istället.
    • På grund av kompatibilitetsproblem,NSBaselineOffsetAttributeName attribut stöds inte längre i iOS 6.
    • Smakämnen NSTextAlignmentNatural värdet stöds inte och kommer att skapa ett undantag när det används med textjustering egenskapen för UILabel eller tillhandahålls som justeringsparametern tilldrawInRect:withFont:lineBreakMode:alignment: metod för NSString.
    • Metoden setContentStretch: för UIV Visa har fasats ut i denna betaversion. För att uppnå samma effekt, använd resizableImageWithCapInsets: metod för UIImage och visa bilden med en UIImageView.
    • Smakämnen resizableImageWithCapInsets: Metoden för UIImage ändrar effektivt bildernas storlek genom att lägga till plattor. Som en prestandaoptimering använder den sträckning snarare än sida vid sida när användaren inte skulle kunna se skillnad, som när en enda kolumn eller rad sträcks ut. Men under vissa omständigheter kanske man faktiskt vill sträcka en del av en bild. I iOS 6 tillåter resizableImageWithCapInsets:resizingMode:-metoden den som ringer att ange ett storleksändringsläge vid sida eller sträckning.
    • Smakämnen UICollectionViewLayout klass har ändrats: FIXAT: I iOS 6 fixades en bugg där UIWebView.isLoading ställdes till NO innan huvudramen slutfördes att laddas. Nu är UIWebView.isLoading inställt på NO när huvudramen har laddats klart.
      • Klassen stöder nu anpassning av animationer som skapas under rotation. Namnen på metoder för att anpassa infoga och ta bort animeringar har också ändrats så att samma krokar kan användas för såväl rotationer som för infogning och borttagning.
      • Klassen har ändrat några metodnamn. Specifikt hänvisas inte längre till dekorationsvyer med "återanvändningsidentifierare" utan snarare med "elementtyp". Appar som använder dekorativa vyer måste ändra sin kod och byggas om för att klara detta.
    • Nederkanten av en UILabel vyn skiljer sig nu från dess baslinje. Tidigare tolkade den automatiska layouten botten av en UIL-etikett som samma som dess baslinje. Även om det var praktiskt i många fall, orsakade det problem om du ville placera den övre kanten av en etikett mot underkanten av en annan. I ett sådant scenario skulle den nedre etiketten överlappa den översta, och nedstigande etiketter från den översta etiketten kan krascha in i stigare från den nedre etiketten. Nu tolkar den automatiska layouten UILayoutAttributeBottom som botten av textrutan (förutsatt att etiketten inte är större än dess inneboende innehållsstorlek), och UILayoutAttributeBaseline som baslinjen för texten. Om du redan har skapat kod för att lägga ut etiketter enligt botten- eller mittpunkten kommer din text att flytta runt lite och du måste justera dina begränsningar.
    • Appar med tabellvyer i sina nib- eller storyboard-filer, och som byggdes med tidigare versioner av iOS 6 beta, kräver en ren konstruktion med beta 3 och nyare.
    • Här är några anteckningar om stöd för automatisk layoutUIScrollView:
      • I allmänhet betraktar automatisk layout de övre, vänstra, nedre och högra kanterna av en vy som de synliga kanterna. Det vill säga, om du fäster en vy till den vänstra kanten av dess översikt, fäster du den verkligen till det lägsta x-värdet för supervyns gränser. Att ändra gränsernas ursprung för översikten ändrar inte vyns position.
      • Klassen UIScrollView rullar sitt innehåll genom att ändra ursprunget för dess gränser. För att få det här att fungera med automatisk layout innebär innebörden av de övre, vänstra, nedre och högra kanterna i en rullningsvy nu kanterna på dess innehållsvy.
      • Begränsningarna på undervyerna i rullningsvyn måste resultera i en storlek att fylla, som sedan tolkas som innehållsstorleken i rullningsvyn. (Detta ska inte förväxlas medintrinsicContentSize metod som används för automatisk layout.) För att storleken på rullvyns ram med automatisk layout måste begränsningar antingen vara tydliga vad gäller bredden och höjden på rullningsvyn eller så måste kanterna på rullvyn vara knutna till vyer utanför dess underträd.
      • Observera att du kan få en undervy av rullningsvyn att verka flytande (inte rulla) över det andra rullande innehållet genom att skapa begränsningar mellan vyn och en vy utanför rullvyns underträd, till exempel rullvyns översikt.
      • Här är några exempel på hur du konfigurerar rullningsvyn:
        • Blandat tillvägagångssätt:
          1. Placera och storleksanpassa din rullningsvy med begränsningar utanför rullningsvyn – det vill sägaöversätterAutoresizingMaskIntoConstraintsegenskapen är inställd på NO.
          2. Skapa en slätt UIV Visainnehållsvy för din rullningsvy som får den storlek du vill att ditt innehåll ska ha. Gör den till en undervy av rullningsvyn men låt den fortsätta att översätta masken för automatisk storleksändring till begränsningar:
  • UIView *contentView = [[UIView alloc]
  •     initWithFrame:CGRectMake(0,0,contentWidth,contentHeight)];
  • [scrollView addSubview:contentView];
  • // Ändra INTE contentView's translatesAutoresizingMaskIntoConstraints,
  • // som är standard till YES;
      1. Ställ in innehållsstorleken för rullningsvyn så att den matchar storleken på innehållsvyn:
  • [scrollView setContentSize:CGMakeSize(contentWidth,contentHeight)];
      1. Skapa vyerna du vill lägga in i innehållsvyn och konfigurera deras begränsningar så att de placeras i innehållsvyn. Alternativt kan du skapa ett vyunderträd för att gå i rullningsvyn, ställa in dina begränsningar och anropasystemLayoutSizeFittingSize:metoden (medUILyoutFittingCompressedSizealternativ) för att hitta den storlek du vill använda för innehållsvyns storlek ochinnehållsstorlekegenskapen för rullningsvyn.
    • Ren autolayoutmetod:
      1. I detta fallöversätterAutoresizingMaskIntoConstraintsmåste ställas in på NO på alla inblandade vyer.
      2. Placera och ändra storlek på din rullningsvy med begränsningar utanför rullningsvyn.
      3. Använd begränsningar för att lägga ut undervyerna i rullningsvyn, se till att begränsningarna knyter an till alla fyra kanterna av rullningsvyn och inte lita på rullningsvyn för att få deras storlek. Ett enkelt exempel skulle vara en stor bildvy, som har en inneboende innehållsstorlek härledd från bildens storlek. I denviewDidLoadmetod för din vykontroller, skulle du inkludera kod som följande:
      1. Detta skulle ge dig en rullningsvy som ändrats till vykontrollantens vy (som vid enhetsrotation), och bildvyn skulle vara en rullande undervy. Du behöver inte ställa in innehållsstorleken för rullningsvyn.

Safari och WebKit

  • WebKit på iOS stöder nu metoderna requestAnimationFrame och cancelAnimationFrame i JavaScript, som beskrivs härhttp://www.w3.org/TR/animation-timing/.Standardkvoten för appcache har ökats från 5 MB till 25 MB.
    • Observera att eftersom specifikationen fortfarande är i Working Draft-tillståndet har dessa metoder webkit-prefixet, så de är window.webkitRequestAnimationFrame, window.webkitCancelAnimationFrame.
  • JPEG-subsamplingströskeln höjdes från 2 MP (megapixel) till 5 MP på all hårdvara som stöds utom iPhone 3GS och iPod touch (4:e generationen).
  • Support har lagts till för taggar i webbformulär. Användare kan ladda upp befintliga foton och videor från sitt fotobibliotek eller ta en bild eller video med kameran. Tidigare var denna formulärkontroll alltid inaktiverad.
  • Med Safari 6.0 på OS X kan utvecklare nu använda Web Inspector (webbutvecklingsverktyg) med anslutna iOS-enheter och iOS Simulator. Utvecklare kan använda webbinspektören för att felsöka Safari och UIWebView klass i sina egna appar byggda och körs från Xcode. Detta ersätter Debug Console-bannern i Safari.
  • I iOS 6 och senare, webbdata (SQL Web Storage och LocalStorage) från enUIWebView objekt kan lagras i en katalog som kommer att säkerhetskopieras. För att möjliggöra säkerhetskopiering av denna data, ställ in WebKitStoreWebDataForBackup-nyckeln till YES i appens standardinställningar. Detta bör endast göras om din app förlitar sig på webbinnehållsdata som inte kan laddas om. Om ditt UIWebView-objekt öppnar länkar till godtyckligt webbinnehåll, bör denna nyckel ställas in på NO. Att växla värdet på denna nyckel kommer inte att bevara befintlig webbvydata.
  • I iOS 6 och senare registrerar Safari inte längre för det vanliga flödet: RSS/ATOM-schemat. Appar som kan se dessa typer av flöden uppmuntras att registrera sig för det URL-schemat.
  • WebKit skapar inte längre alltid hårdvaruaccelererade lager för element med alternativet -webkit-transform: preserve-3d. Författare bör sluta använda det här alternativet som ett sätt att få hårdvaruacceleration.
  • Experimentellt stöd för CSS3 Flexbox kommer att inaktiveras. Byt från att använda -webkit-flexbox och -webkit-inline-flexbox till -webkit-box och -webkit-inline-box.
  • Från och med iOS 6 kommer inbäddade YouTube-webbadresser i form av http://www.youtube.com/watch?v=oHg5SJYRHA0 inte längre att fungera. Dessa webbadresser är till för att titta på videon på YouTubes webbplats, inte för att bädda in på webbsidor. Istället beskrivs formatet som ska användas ihttps://developers.google.com/youtube/player_parameters.
  • I iOS 6 lades egenskapen keyboardDisplayRequiresUserAction till i klassen UIWebView. Egenskapen har som standard YES, vilket betyder att anrop av focus() på ett formulärelement inte kommer att visa tangentbordet. Genom att ändra egenskapen till NO, kommer ett JavaScript-anrop till focus() på ett formulärelement att fokusera elementet och automatiskt ta fram tangentbordet.
  • Från och med iOS 6 fokuserar elementet genom att anropa focus() på ett formulärelement i en webbapp.