iOS 6 beta 3 – her er alt nyt + changelog (konstant opdateret artikel) x14

  Mere end en time nu Apple lanceret iOS beta 6 3 for udviklere af applikationer til App Store og i den inkluderede en række ændringer, de fleste af dem subtile, desværre. I denne artikel har vi listet de vigtigste nyheder, men også den officielle changelog udgivet af virksomheden.

1. En ny menu til Maps-applikationen igen i denne artikel har du detaljerne.

2. Systemet, der advarer dig, når et program anmoder om adgang til dine data fra adressebogen, er blevet forbedret.

3. Mange af de problemer, som Apple TV havde med Netflix-applikationen, med fjernbetjeningen, med diasshowene eller med YouTube-applikationen blev løst.

4. Rettede problemet, hvor knapperne Accepter/Afvis til FaceTime-opkald ikke blev vist.

5. På iPad-tabletten er Safaris historie, favoritliste og læsemenuer nu tilgængelige på en enkelt fane.

6. Privatlivssektionen indeholder nu ikoner for hver separat kategori.

7. Siri er sværere at besvare spørgsmål, men stemmen blev lidt ændret af Apple.

8. Brugere har mulighed for at registrere e-mailadresser med domænet @icloud.com.

9. Den delte fotostream når også iPhone 3GS og iPod Touch.

10. VIP-e-mail-funktionen når også iPod Touch.

11. Siri kan åbne AssistiveTouch-menuen.

12. Mail-applikationen har en ny knap til arkivering af e-mails.

13. Kortapplikationen giver information om trafik i visse lande.

14. Når du opdaterer en applikation, vil knappen Opdateringer i App Store vise dig en indikator vedrørende forløbet af applikationsinstallationen.

 

Noter og kendte problemer

Følgende problemer vedrører brugen af ​​iOS SDK 6.0 til at udvikle kode.

Adressebog

  • Når en app er i en frisk privatlivstilstand og forsøger at præsentere enABNewPersonViewController, kan brugeren ikke afvise denne visningscontroller korrekt, selvom de tillader adgang til kontakter. Brugeren skal tvinge til at afslutte appen og genstarte.
  • Anmodning om adgang til kontakter:
    • Brugere er i stand til at give eller nægte adgang til kontaktdata pr. app. For at anmode om adgang til kontaktdata skal du ringe til ABAddressBookRequestAccessWithCompletion-funktionen efter at have ringet til ABAddressBookCreateWithOptions fungere. ABAddressBookRequestAccessWithCompletion-funktionen blokerer ikke appen, mens brugeren bliver bedt om at give eller nægte adgang. Indtil der er givet adgang, skal den AB AdressebogRefobjekt vil ikke indeholde nogen kontakter, og ethvert forsøg på at ændre kontakter mislykkes med en kABOperationNotPermittedByUserErrorfejl. Brugeren bliver kun spurgt første gang der anmodes om adgang; eventuelle efterfølgende opkald til ABAddressBookCreateWithOptions vil bruge de eksisterende tilladelser. Fuldførelsesbehandleren kaldes på en vilkårlig kø. Hvis ABAddressBookRef-objektet bruges i hele appen, skal al brug sendes til den samme kø for at bruge ABAddressBookRef på en trådsikker måde.
  • Kontrol af adgangsgodkendelsesstatus:
    • En app kan bruge autorisationsstatus-API'en til at kontrollere, om den kan få adgang til kontakter, kalendere, påmindelser eller fotobibliotek. Denne API er uafhængig af anmodningsadgangs-API'en og vil ikke bede brugeren om at give eller nægte adgang. Med denne API kan en app justere visningen af ​​dens UI-elementer, der ville få adgang til dataklassen. For eksempel, hvis adgang til kontakter er autoriseret eller ikke bestemt, kan en brugergrænsefladeknap til at vælge en kontakt vises.
    • For adressebog skal du kalde funktionen ABAddressBookGetAuthorizationStatus. For Event Kit skal du kalde autorisationsStatusForEntityType: klassemetoden forEKEventStore. For Assets Library skal du kalde autorisationsStatus-klassemetoden for ALAssetsLibrary. Betydningen af ​​de statusværdier, der returneres, er som følger:
      • Autorisationsstatus ikke fastlagt - Brugeren har endnu ikke truffet et valg om, hvorvidt denne app kan få adgang til dataklassen.
      • Autorisationsstatus begrænset – Denne app er ikke autoriseret til at få adgang til dataklassen. Brugeren kan ikke ændre denne apps status, muligvis på grund af aktive begrænsninger, såsom forældrekontrol, der er på plads.
      • Autorisationsstatus nægtet - Brugeren nægtede eksplicit adgang til dataklassen for denne app.
      • Autorisation Status Autoriseret – Denne app er autoriseret til at få adgang til dataklassen.

Apple TV

  • I nogle tilfælde kan skærmen vise den forkerte opløsning. Genstart dit Apple TV for at få det tilbage til den korrekte opløsning.
  • RETTET: Netflix-videoer genoptages muligvis ikke, hvor du slap.
  • RETTET: Historiklisten i YouTube-appen bliver ryddet, når du afslutter og åbner appen igen.
  • Apple TV kan være langsom til at reagere, mens en download er i gang i baggrunden.
  • Apple TV genstarter muligvis, mens du bruger Remote-appen.
  • Apple TV genstarter muligvis, når systemsproget ændres.
  • Fotostream indlæses ikke, når du logger ind igen. Genstart Apple TV for at løse problemet.
  • Musik afspilles ikke under billeddiasshows.
  • Ny adfærd:
    • Vælg fjernhøjttalere i Indstillinger > AirPlay.
    • Indstil en skærmkode til AirPlay i Indstillinger > AirPlay.
    • Gem flere iTunes Store-konti i Indstillinger > iTunes Store.
    • Tryk og hold på knappen Vælg for at omarrangere ikoner i hovedmenuen.
    • Skjul hovedmenuikonerne i Indstillinger > Generelt > Forældrekontrol.

Hej

  •  NSNetService klasse og CFNetService API'er inkluderer ikke P2P-grænseflader som standard. For at gennemse, registrere eller løse tjenester via P2P-grænseflader skal en app bruge Bonjour DNSService*() API'erne, der er nævnt nedenfor.
  • Indstilling af parameteren interfaceIndex til kDNSServiceInterfaceIndexEnhver i de følgende API'er vil ikke inkludere P2P-grænseflader som standard. For at inkludere P2P-grænseflader skal du nu indstille flaget kDNSServiceFlagsIncludeP2P, når du bruger kDNSServiceInterfaceIndexAny, eller indstille interfaceIndex til kDNSServiceInterfaceIndexP2P. De berørte API'er har:
    • DNSServiceGennemse
    • DNSServiceRegister
    • DNSServiceResolve
    • DNSServiceRegisterRecord
    • DNSServiceQueryRecord

ordbog

  • Der er et kendt problem med ordbøger, når man forsøger at definere et ord på et andet sprog end engelsk eller japansk. Når referencebiblioteket præsenteres, præsenteres brugeren for muligheden for at downloade en ordbog - den download begynder muligvis ikke. Brugeren kan trykke uden for popover-vinduet på en iPad eller trykke på knappen "Udført" på iPhone eller iPod touch for at afvise downloadanmodningen.

Event Kit

  • Anmodning om adgang til kalendere eller påmindelser:
    • Brugere er i stand til at give eller nægte adgang til begivenheds- og påmindelsesdata pr. app. For at anmode om adgang til begivenheds- og/eller påmindelsesdata skal du ringe til requestAccessToEntityType:completion:-metoden for EKEventStore. Dette vil ikke blokere appen, mens brugeren bliver bedt om at give eller nægte adgang. Indtil der er givet adgang til en enhedstype, vil begivenhedslagret ikke indeholde nogen kalendere for denne enhedstype, og ethvert forsøg på at gemme data vil mislykkes.
    • Brugeren vil kun blive bedt om første gang der anmodes om adgang; enhver efterfølgende instansiering af EKEventStore vil bruge de eksisterende tilladelser. Fuldførelsesbehandleren kaldes på en vilkårlig kø.

Game Center

  • Når du opretter en ny Game Center-konto i appen på iPad'en, vises popoveren til valg af måned for din fødselsdato uden indhold at vælge.
  • Autentificeringsmetoden for GKLocalPlayer er blevet fjernet. Godkendelsen begynder automatisk, når fuldførelsesbehandleren er indstillet.

iCloud

  • Når du opretter en iCloud-konto, kan du bruge et hvilket som helst e-mail-baseret Apple-id, eller du kan bruge din eksisterende iCloud-konto. Hvis du havde en MobileMe-konto, som du endnu ikke har flyttet til iCloud, skal du først flytte den ved at besøgehttp://me.com. Flytning til iCloud er kun tilgængelig i en begrænset periode. Log ind på en MobileMe-konto understøttes ikke i iOS 6. Provisioneringsprofiler skal være aktiveret for iCloud i iOS Provisioning Portal. For at aktivere en klargøringsprofil til iCloud skal du navigere til afsnittet App-id i iOS-provisioneringsportalen og konfigurere dit app-id til iCloud. Når du har aktiveret app-id'et for iCloud, skal du genskabe dine klargøringsprofiler for at aktivere dem til iCloud.
    • icloud.com-e-mailadresser er nu tilgængelige for iCloud-mailbrugere. Brugere, der tilmelder sig nye Apple-id'er, eller aktiverer Mail på deres iCloud-konto for første gang, vil automatisk modtage en @icloud.com-e-mailadresse i stedet for en me.com-e-mailadresse. iCloud-brugere med @me.com-adresser, der er blevet brugt med iOS 6 beta 3, vil modtage en @icloud.com-e-mailadresse, der matcher deres @me.com-adresse.
    • icloud.com e-mail kan ikke sendes fra www.icloud.com. Brugere bør bruge http://beta.icloud.com på dette tidspunkt, hvis de ønsker at sende e-mail fra deres icloud.com-adresse ved hjælp af en webbrowser.
  •  setSortDescriptors: NSMetadataQuery-metoden understøttes ikke.
  • I iOS 6 kan filer, der er beskyttet via databeskyttelse, ikke bruges med iCloud Storage API'er.
  • Filnavne skelner mellem store og små bogstaver i OS X, men skelner mellem store og små bogstaver i iOS. Dette kan føre til problemer, når du deler filer mellem de to platforme ved hjælp af iCloud. Du bør tage skridt på iOS for at undgå at oprette filer, hvis navne kun afviger fra sag til sag.
  • Opførselen af ​​koordinerede læseoperationer på iCloud-dokumenter har ændret sig. På tidligere iOS-udgivelser, når din app udførte en koordineret læsehandling på en fil eller pakke, og iCloud-dæmonen bemærkede, at der var en nyere version af elementet tilgængelig, blev den koordinerede læsehandling blokeret, indtil den nyere version af elementet blev downloadet og skrevet til disken.
    Fra og med iOS 6 beta 3, når du starter en koordineret læseoperation på en fil eller pakke, som du allerede har en lokal version til, vil den koordinerede læsning blive givet så hurtigt som muligt, og den nye version, hvis nogen, downloades i baggrunden. Dette opkald blokeres kun af downloadårsager, hvis du ikke har nogen version af filen tilgængelig lokalt.
    Derudover, når filen er i konflikt, vil iCloud-dæmonen ikke vente, indtil den har alle konflikttaberne af filen tilgængelige for at gøre filen tilgængelig for din app. Det vil gøre de forskellige versioner af den konfliktfyldte fil tilgængelige, så snart det kan. Din app kan bruge den eksisterende filkoordinering og UDokumenttilbagekald for at blive underrettet, når konflikttaberne er downloadet og tilgængelige.

iMessage og FaceTime

  • RETTET: Knapperne Svar og Afvis mangler ved modtagelse af opkald i liggende retning.

iTunes

  • iTunes 10.6.3 er påkrævet til iOS SDK 6.0.
  • RETTET: Ved gendannelse fra en iTunes-sikkerhedskopi, vises enheden med mellemrum som en ny enhed efter genstart. Hvis det sker, skal du konfigurere enheden som en "ny enhed", når du bliver bedt om at gendanne den for anden gang. Alle data skulle være blevet gendannet korrekt, men synkroniseringsindstillinger inklusive apparrangement i iTunes går tabt.

Maps

  • I iOS 6 og nyere er Map Kit bygget på en ny infrastruktur hostet af Apple. Tidligere iOS-udgivelser vil fortsætte med at bruge Googles service.RETTET: Hvis Maps ikke kører i baggrunden, vises fejlen "Maps kan ikke oprette forbindelse til internettet", når det startes fra en 3. parts app.
    • API-kompatibilitet vil blive opretholdt (se kendte problemer nedenfor).
    • Kort understøttes nu i simulatoren.
    • Kortdata vil fortsætte med at udvikle sig - kun en begrænset mængde højopløsningssatellitbilleder er i øjeblikket tilgængelig.
  • RETTET: Hvis Maps endnu ikke er blevet lanceret, vises den aktuelle placering ikke, når den startes fra en 3. parts app.
  • Routing-apps, der ikke angiver en dækningsfil under udvikling, vil altid blive vist i Maps-routingsøgeresultaterne.
  • Test og fejlretning af dækningsfiler til routing af apps understøttes kun under udvikling gennem Xcode "Run" workflowet. (Du kan angive dækningsfilen for en given Kør-ordning ved at bruge ruden Indstillinger i Kør-sektionen i skemaeditoren.) Apps, der er arkiveret og distribueret (uden for App Store) på enheder, vil ikke have adgang til appens dækningsfiler .
  • Maps zoomer ikke ind på den aktuelle placering, når den startes fra en tredjepartsapp.

Aviskiosk

  • Kun simple http-downloads vil fungere med Bladkiosk.

Passbook

  • RETTET: Et flyikon vises mellem afrejse og destination for alle transittyper.
  • Feltet "Beskrivelse" er nu et obligatorisk felt for et bestået. Alle afleveringer, der oprettes uden det, vil ikke valideres og vil ikke indtages.
  • RETTET: Passbook-databasen er blevet nulstillet. Du skal tilføje dine kort igen.
  • Passbook i simulatoren kræver ikke længere https/ssl ved brug af en webServiceURL ved indtagelse af et pass.
  • Kan ikke vise boardingkort på låseskærmen.

Påmindelser

  • LØST: Der er problemer, når du tilføjer og redigerer påmindelser i appen Påmindelser på iPhone-enheder:
    • Knappen Udført mangler, når du tilføjer en ny påmindelse.
    • Appen går ned, når du trykker på knappen Rediger for at redigere en påmindelse.

Sikkerhed

  • I iOS 5 er signering af et certifikat med en MD5-signatur ikke understøttet. Sørg for, at certifikater bruger signaturalgoritmer baseret på SHA1 eller SHA2.
  • I iOS 6 er der forbedret privatlivskontrol for kalendere, påmindelser, kontakter og fotos.
    • Brugere vil se adgangsdialoger, når en app forsøger at få adgang til nogen af ​​disse datatyper. Brugeren kan slå adgang til og fra i Indstillinger > Fortrolighed.
    • Udviklere kan indstille en "formål"-streng for hver klasse af isolerede data. iOS viser denne streng til brugerne for at hjælpe dem med at forstå, hvorfor deres data bliver anmodet om. Disse strenge kan tilføjes ved hjælp af Xcodes Project editor, på fanen Info. De relevante nøglenavne begynder med strengen "Privacy -".
    • Der er ændringer til Event Kit og Address Book rammerne for at hjælpe udviklere med denne funktion.

Simulator

  • Bekræftelsespanelet for appsletning tager et stykke tid at dukke op i iOS Simulator.
  • RETTET: Tryk på købsknappen i visningen af ​​enSKStoreProductViewController objekt i iOS Simulator får appen til at gå ned.
  • Ingen privatlivsadvarsler vises i iOS Simulator for apps, der har adgang til billeder, kontakter, kalender og påmindelser.
  • Download af køb i appen hostet indhold i iOS Simulator understøttes ikke.
  • Når du forsøger at afspille en MP3-lyd i simulatoren, vil du i stedet høre en poppende lyd.
  • RETTET: Brug af iOS 5.1 SDK med iPad (Retina)-profilen vil resultere i et SpringBoard-nedbrud. iOS 5.1 SDK fungerer med alle andre profiler, og iPad (Retina) SDK fungerer med iOS 6.0 SDK.
  • RETTET: Annoncer af typen ADAdTypeMediumRectangle vises ikke i iPad Simulator.

Delt fotostream

  • Brugeren skal gå til Indstillinger > iCloud for at sikre, at de modtager meddelelser om delt fotostream.
  • For at dele en fotostream med iOS 6 beta, skal du invitere en person ved hjælp af deres iCloud-e-mailadresse, ellers modtager de ikke invitationen.
  • Opgradering fra iOS 6 beta 1 til beta 2 vil få din enhed til at gendownloade alle dine delte fotostreams.
  • Funktionen Shared Photo Stream er indstillet til FRA ved opdatering fra iOS 6 beta 1 til en senere udgivelse. Standardindstillingen skal være TIL.
  • Deaktivering af delte fotostreams kan efterlade kameraet i en ikke-reagerende tilstand, tvingende afslutning af kameraet vil løse dette problem.

Social

  • Weibo vises kun i appen Indstillinger, hvis et kinesisk tastatur er aktiveret.
  •  requestAccessToAccountsWithType:withCompletionHandler: metoden for ACAccountStore er nu forældet. For at få adgang til brugerkonti, brug venligstrequestAccessToAccountsWithType:options:completion: metode. I indstillingsparameteren for denne nye metode skal du angive nul for at få adgang til Twitter- og Weibo-konti. For at få adgang til Facebook-konti skal du sende en ordbog med følgende nøgler (som er dokumenteret i ACAccountStore.h): Du bør ikke længere tilføje denne ordbog til din apps Info.plist-fil, som det var påkrævet i beta 1.
    • ACFacebookAppIdKey
    • ACFacebookPermissionsKey
    • ACFacebookPermissionGroupKey

springbræt

  • RETTET: Efter at have gendannet en enhed i iTunes eller udført en "Slet alt indhold og indstillinger", vises det aktuelle tapet muligvis ikke, før enheden genstartes én gang.

Statuslinje

  • Det er nu muligt at indstille statuslinjens farvetoneparametre i din apps Info.plist-fil. Du kan gøre dette for at sikre, at statuslinjens farve matcher navigationslinjens farve på din app under opstart. For at indstille statuslinjens farvetone skal du tilføje UIStatusBarTintParameters-nøglen til din Info.plist-fil. Værdien af ​​denne nøgle er en ordbog med de relevante værdier, der beskriver den navigationslinje, din app har ved opstartstidspunktet. Inde i ordbogen skal nøglen UINavigationBar være, hvis værdi også er en ordbog. Denne ordbog indeholder den indledende navigationslinjes stil (med Style-tasten), og om den er gennemskinnelig (med Gennemsigtig-tasten). Hvis din navigationslinje bruger dem, kan du også angive dens tonefarve (med TintColor-tasten) eller navnet på dens brugerdefinerede baggrundsbillede (med BackgroundImage-tasten).

UIKit

    • I iOS 5.1 er UISplitViewController klasse anvender den glidende præsentationsstil, når den venstre visning præsenteres (tidligere kun set i Mail). Denne stil bruges, når præsentationen startes enten af ​​det eksisterende bjælkeknapelement, der leveres af delegeretmetoderne, eller af en strygebevægelse i den højre visning. Der kræves ingen yderligere API-adoption for at opnå denne adfærd, og alle eksisterende API, inklusive den for UIPopoverController-instansen leveret af den delegerede, vil fortsætte med at fungere som før. Hvis bevægelsen ikke kan understøttes i din app, skal du indstille præsentererMedGesture egenskaben for din split view-controller til NO deaktiverer gestus. Det frarådes dog at deaktivere gestus, fordi brugen af ​​den bevarer en ensartet brugeroplevelse på tværs af alle apps.
    • RETTET: I iOS 6 er der blevet indført ændringer, så du ikke længere behøver at indstille en delegeret og implementere en metode til Single-Finger og Single-Tap gestus genkendelser, i et forsøg på at få dem til at fungere godt med UIControl objekter.
    • I iOS 6 og nyere er UIWebView klasse maler indholdet asynkront.
    • RETTET: Udviklere, der prøver Auto Layout med UIScrollViewobjekter kan bemærke rystelser i rulleindikatorerne på enheder med Retina-skærme.
    • Autorotation ændrer sig i iOS 6. I iOS 6 ershouldAutorotateToInterfaceOrientation: metoden for UIViewController er forældet. I stedet skal du brugeunderstøttede InterfaceOrientations og shouldAutorotate-metoder LØST: I visse situationer aktiveres automatisk layout-systemet muligvis ikke automatisk til en visning. For at omgå dette problem skal du tilsidesætte kræverConstraintBasedLayout klassemetoden efter din mening og returnerer JA fra din implementering.
      • Mere ansvar flyttes til appen og app-delegeret. Nu er iOS-beholdere (som f.eksUINavigationController) ikke rådføre sig med deres børn for at afgøre, om de skal autorotere. Som standard er en app og en visningscontrollers understøttede grænsefladeorientering indstillet til UIInterfaceOrientationMaskAll til iPad idiom ogUIInterfaceOrientationMaskAllButUpsideDownfor iPhone-formsproget.
      • En visningscontrollers understøttede grænsefladeorienteringer kan ændre sig over tid. Selv en apps understøttede grænsefladeorienteringer kan ændre sig over tid. Systemet beder både den øverste fuldskærmsvisningscontroller (typisk rodvisningscontrolleren) om dens understøttede grænsefladeorienteringer, hver gang enheden roterer, eller når en visningscontroller præsenteres med fuldskærmsmodal præsentationsstil. Desuden hentes de understøttede orienteringer kun, hvis denne visningscontroller returnerer YES fra sin shouldAutorotate-metode. Systemet skærer visningscontrollerens understøttede orienteringer med appens understøttede orienteringer (som bestemt af Info.plist-filen eller app-delegeredesapplication:supportedInterfaceOrientationsForWindow:metode) for at bestemme, om der skal roteres.
      • Systemet bestemmer, om en orientering understøttes ved at skære den værdi, der returneres af appensunderstøttede InterfaceOrientationsForWindow:metode med værdien returneret afunderstøttede InterfaceOrientations metoden for den øverste fuldskærmscontroller.
      •  setStatusBarOrientation:animated:metoden er ikke direkte frarådet. Men det virker nu kun, hvisunderstøttede InterfaceOrientations metoden for den øverste fuldskærmsvisningscontroller returnerer 0. Dette lægger ansvaret for at sikre, at statuslinjens orientering er ensartet, i hænderne på den, der ringer.
      • For kompatibilitet, se controllere, der stadig implementerershouldAutorotateToInterfaceOrientation: metode får ikke den nye autorotationsadfærd. (Med andre ord falder de ikke tilbage til at bruge appen, app-delegaten eller Info.plist-filen til at bestemme de understøttede orienteringer).understøttede InterfaceOrientations fremgangsmåde.
    •  willRotateToInterfaceOrientation:varighed:,willAnimateRotationToInterfaceOrientation:varighed:ogdidRotateFromInterfaceOrientation: metoder kaldes ikke længere på nogen visningscontroller, der laver en fuldskærmspræsentation over sig selv - for eksempel ved at ringepresentViewController:animated:completion:.I iOS 6 er viewWillUnload , viewDidUnload metoderne i UIViewController er nu forældede. Hvis du brugte disse metoder til at frigive data, skal du bruge didReceiveMemoryWarningmetode i stedet for. Du kan også bruge denne metode til at frigive referencer til visningscontrollerens visning, hvis den ikke bliver brugt. Du skal teste, at visningen ikke er i et vindue, før du gør dette.
      • Du bør sikre dig, at dine apps ikke bruger disse metoder til at administrere layoutet af eventuelle undervisninger. I stedet skal de bruge visningscontrollerens viewWillLayoutSubviewsmetode og juster layoutet ved hjælp af visningens grænser rektangel.
    • FIXED: Kalder nogen af ​​de tilskrevne strengtegningsmetoder uden at angive en værdi for NSFontAttributeName attribut vil sandsynligvis give en undtagelse. Løsningen er at indstille en værdi for NSFontAttributeName-nøglen, før du tegner eller dimensionerer enNSAttributedString objekt.
    • Indstilling af værdier for skyggeOffset or skyggeFarve egenskaber for et UILabel-objekt, hvis tilskrevet tekst egenskaben indeholder en gyldig tilskrevet streng, understøttes ikke. BrugNSShadowAttributeName attribut for den tildelte streng for at sætte skyggen i stedet for.
    • På grund af kompatibilitetsproblemerNSBaselineOffsetAttributeName attribut er ikke længere understøttet i iOS 6.
    •  NSTextAlignmentNatural værdi er ikke understøttet og vil give en undtagelse, når den bruges med tekstjustering egenskaben for UILabel eller leveres som justeringsparameter tildrawInRect:withFont:lineBreakMode:alignment: metode til NSString.
    • SetContentStretch: metoden til UIVvisning er blevet forældet i denne betaversion. For at opnå den samme effekt skal du bruge resizableImageWithCapInsets: metode til UIImage og vis billedet med en UIImageView.
    •  resizableImageWithCapInsets: metode til UIImage ændrer effektivt billeder ved at flise. Som en ydeevneoptimering bruger den strækning frem for fliselægning, når brugeren ikke ville være i stand til at se forskel, som når en enkelt kolonne eller række strækkes. Men under visse omstændigheder vil man måske faktisk strække en del af et billede. I iOS 6 giver resizableImageWithCapInsets:resizingMode:-metoden den, der ringer, mulighed for at angive en tiling- eller stretching-ændringstilstand.
    •  UICollectionViewLayout klasse er ændret: FIKSET: I iOS 6 blev en fejl rettet, hvor UIWebView.isLoading blev sat til NO, før hovedrammen blev færdig med at indlæse. Nu er UIWebView.isLoading indstillet til NO, når hovedrammen er færdig med at indlæse.
      • Klassen understøtter nu tilpasningen af ​​de animationer, der er oprettet under rotation. Navnene på metoder til at tilpasse indsæt og slette animationer er også ændret, så de samme kroge kan bruges til rotationer såvel som til indsættelser og sletninger.
      • Klassen har ændret nogle metodenavne. Specifikt omtales dekorationsvisninger ikke længere med "genbrugs-id", men snarere med "elementtype". Apps, der bruger dekorative visninger, skal ændre deres kode og genopbygge for at imødekomme dette.
    • Den nederste kant af en UILabel visningen er nu forskellig fra dens basislinje. Tidligere fortolkede autolayout bunden af ​​en UIL-mærke til at være den samme som dens basislinje. Selvom det var praktisk i mange tilfælde, gav det problemer, hvis du ønskede at placere den øverste kant af en etiket mod den nederste kant af en anden. I et sådant scenarie ville den nederste etiket overlappe den øverste, og nedstigende etiketter fra den øverste etiket kunne støde ind i stiger fra den nederste etiket. Nu fortolker autolayout UILayoutAttributeBottom som bunden af ​​tekstboksen (forudsat at etiketten ikke er større end dens iboende indholdsstørrelse), og UILayoutAttributeBaseline som tekstens grundlinje. Hvis du allerede har oprettet kode til udlægning af etiketter i henhold til bunden eller midtpunktet, vil din tekst flytte sig lidt rundt, og du bliver nødt til at justere dine begrænsninger.
    • Apps med tabelvisninger i deres nib- eller storyboard-filer, og som blev bygget ved hjælp af tidligere versioner af iOS 6 beta, kræver en ren build med beta 3 og nyere.
    • Her er nogle bemærkninger vedrørende automatisk layoutunderstøttelse tilUIScrollView:
      • Generelt betragter automatisk layout den øverste, venstre, nederste og højre kant af en visning som de synlige kanter. Det vil sige, at hvis du fastgør en visning til venstre kant af dens superview, fastgør du den virkelig til minimum x-værdien af ​​superviewens grænser. Ændring af grænseoprindelsen for supervisningen ændrer ikke placeringen af ​​visningen.
      • UIScrollView-klassen ruller sit indhold ved at ændre oprindelsen af ​​dets grænser. For at få dette til at fungere med automatisk layout betyder betydningen af ​​de øverste, venstre, nederste og højre kanter i en rullevisning nu kanterne af dens indholdsvisning.
      • Begrænsningerne på undervisningerne af rullevisningen skal resultere i en størrelse, der skal udfyldes, som derefter fortolkes som indholdsstørrelsen af ​​rullevisningen. (Dette må ikke forveksles medintrinsicContentSize metode, der bruges til automatisk layout.) For at dimensionere rullevisningens ramme med automatisk layout, skal begrænsninger enten være eksplicitte med hensyn til bredden og højden af ​​rullevisningen, eller kanterne af rullevisningen skal være bundet til visninger uden for dens undertræ.
      • Bemærk, at du kan få en undervisning af rullevisningen til at se ud til at flyde (ikke rulle) over det andet rullende indhold ved at skabe begrænsninger mellem visningen og en visning uden for rullevisningens undertræ, såsom rullevisningens supervisning.
      • Her er nogle eksempler på, hvordan du konfigurerer rullevisningen:
        • Blandet tilgang:
          1. Placer og størrelse din rullevisning med begrænsninger uden for rullevisningen - det vil sigeoversætterAutoresizingMaskIntoConstraintsegenskaben er sat til NO.
          2. Lav en almindelig UIVvisningindholdsvisning for din rullevisning, der vil have den størrelse, du ønsker, at dit indhold skal have. Gør det til en undervisning af rullevisningen, men lad det fortsætte med at oversætte masken til automatisk tilpasning til begrænsninger:
  • UIView *contentView = [[UIView alloc]
  •     initWithFrame:CGRectMake(0,0,contentWidth,contentHeight)];
  • [scrollView addSubview:contentView];
  • // Ændr IKKE contentViews oversættelserAutoresizingMaskIntoConstraints,
  • // som standard er YES;
      1. Indstil indholdsstørrelsen for rullevisningen, så den matcher størrelsen på indholdsvisningen:
  • [scrollView setContentSize:CGMakeSize(contentWidth,contentHeight)];
      1. Opret de visninger, du vil placere i indholdsvisningen, og konfigurer deres begrænsninger, så de placeres i indholdsvisningen. Alternativt kan du oprette et visningsundertræ for at gå i rullevisningen, opsætte dine begrænsninger og kaldesystemLayoutSizeFittingSize:metode (medUILayoutFittingCompressedSizeoption) for at finde den størrelse, du vil bruge til din indholdsvisnings størrelse ogindholdsstørrelseegenskaben for rullevisningen.
    • Ren auto layout tilgang:
      1. I dette tilfældeoversætterAutoresizingMaskIntoConstraintsskal sættes til NEJ på alle involverede visninger.
      2. Placer og størrelse din rullevisning med begrænsninger uden for rullevisningen.
      3. Brug begrænsninger til at placere undervisningerne i rullevisningen, og sørg for, at begrænsningerne binder til alle fire kanter af rullevisningen og ikke stoler på rullevisningen for at få deres størrelse. Et simpelt eksempel ville være en stor billedvisning, som har en iboende indholdsstørrelse afledt af billedets størrelse. I denviewDidLoadmetode for din visningscontroller, vil du inkludere kode som følgende:
      1. Dette ville give dig en rullevisning, der ændrede størrelsen på visningscontrollerens visning (såsom ved enhedsrotation), og billedvisningen ville være en rullende undervisning. Du behøver ikke at indstille indholdsstørrelsen for rullevisningen.

Safari og WebKit

  • WebKit på iOS understøtter nu requestAnimationFrame og cancelAnimationFrame metoderne i JavaScript, som beskrevet herhttp://www.w3.org/TR/animation-timing/.Standard app-cachekvoten er blevet øget fra 5MB til 25MB.
    • Bemærk, at fordi specifikationen stadig er i Working Draft-tilstanden, har disse metoder webkit-præfikset, så de er window.webkitRequestAnimationFrame, window.webkitCancelAnimationFrame.
  • JPEG-subsamplingstærsklen blev øget fra 2 MP (megapixels) til 5 MP på al understøttet hardware undtagen iPhone 3GS og iPod touch (4. generation).
  • Der er tilføjet support til tags i webformularer. Brugere kan uploade eksisterende billeder og videoer fra deres fotobibliotek eller tage et billede eller en video ved hjælp af kameraet. Tidligere var denne formularkontrol altid deaktiveret.
  • Med Safari 6.0 på OS X kan udviklere nu bruge Web Inspector (webudviklingsværktøj) med tilknyttede iOS-enheder og iOS Simulator. Udviklere kan bruge Web Inspector til at fejlsøge Safari og UIWebView klasse i deres egne apps bygget og kører fra Xcode. Dette erstatter Debug Console-banneret i Safari.
  • I iOS 6 og nyere kan webdata (SQL Web Storage og LocalStorage) fra enUIWebView objekt kan gemmes i en mappe, der vil blive sikkerhedskopieret. For at aktivere sikkerhedskopiering af disse data skal du indstille WebKitStoreWebDataForBackup-nøglen til JA i din apps brugerstandarder. Dette bør kun gøres, hvis din app er afhængig af webindholdsdata, der ikke kan genindlæses. Hvis dit UIWebView-objekt åbner links til vilkårligt webindhold, skal denne nøgle indstilles til NO. Hvis du skifter værdien af ​​denne nøgle, bevares ikke eksisterende webvisningsdata.
  • I iOS 6 og nyere registrerer Safari ikke længere det fælles feed: RSS/ATOM-skema. Apps, der kan se disse typer feeds, opfordres til at registrere sig for det URL-skema.
  • WebKit opretter ikke længere altid hardware-accelererede lag for elementer med -webkit-transform: preserve-3d-indstillingen. Forfattere bør stoppe med at bruge denne mulighed som en måde at få hardwareacceleration på.
  • Eksperimentel CSS3 Flexbox-understøttelse vil blive deaktiveret. Skift venligst fra at bruge -webkit-flexbox og -webkit-inline-flexbox til -webkit-box og -webkit-inline-box.
  • Fra og med iOS 6 vil indlejrede YouTube-URL'er i form af http://www.youtube.com/watch?v=oHg5SJYRHA0 ikke længere virke. Disse webadresser er til visning af videoen på YouTube-webstedet, ikke til indlejring på websider. I stedet er det format, der skal bruges, beskrevet ihttps://developers.google.com/youtube/player_parameters.
  • I iOS 6 blev egenskaben keyboardDisplayRequiresUserAction tilføjet til klassen UIWebView. Egenskaben er standard til YES, hvilket betyder, at kald af focus() på et formularelement ikke vil få tastaturet frem. Ved at ændre egenskaben til NO, vil et JavaScript-kald til focus() på et formularelement fokusere elementet og automatisk hente tastaturet frem.
  • Fra og med iOS 6 vil kald af focus() på et formularelement i en webapp fokusere elementet.