För några minuter sedan lanserade Apple iOS beta 6 4 för iOS-apputvecklare. Den nya iOS 6 beta 4 har build 10A5376, men för vissa visas den som version beta 3, och för andra visas felet nedan när man försöker återställa. För nu verkar det som att det finns några problem med Apple-systemet, men det var att vänta med tanke på att vi pratar om en betaversion. Den nya betaversionen av iOS 6 finns också tillgänglig i portalen för utvecklare på Apples webbplats, så om du inte kan ladda ner den från terminalen kan du ladda ner den därifrån.
Räkenskaper
-
När du begär åtkomst till Facebook-konton är den enda nyckel som krävs i din alternativordbok
ACFacebookAppIdKey
.ACFacebookPermissionGroupKey
ochACFacebookAppVersionKey
är nu föråldrad.Om du begär ett skriftligt tillstånd nedanACFacebookPermissionsKey
, Såsompublish_stream
måste du ange ett värde förACFacebookAudienceKey
, som kan vara en avACFacebookAudienceEveryone
,ACFacebookAudienceFriends
, ellerACFacebookAudienceOnlyMe
.
adressbok
-
FAST: När en app är i ett nytt sekretessläge och försöker presentera en
ABNewPersonViewController
, kan användaren inte avvisa den vykontrollanten korrekt, även om användaren 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 tillgång till kontaktuppgifter, ring
ABAddressBookRequestAccessWithCompletion
funktion efter att ha anropatABAddressBookCreateWithOptions
fungera. DeABAddressBookRequestAccessWithCompletion
funktionen blockerar inte appen medan användaren uppmanas att bevilja eller neka åtkomst. Tills åtkomst har beviljats,ABAddressBookRef
objektet kommer inte att innehålla några kontakter, och alla försök att ändra kontakter misslyckas med enkABOperationNotPermittedByUserError
fel. Användaren uppmanas endast första gången åtkomst begärs; eventuella efterföljande samtal tillABAddressBookCreateWithOptions
kommer att använda befintliga behörigheter. Färdigställandehanteraren anropas i en godtycklig kö. OmABAddressBookRef
objekt används i hela appen, då måste all användning skickas till samma kö för att kunna användasABAddressBookRef
på ett trådsäkert sätt.
- Användare kan bevilja eller neka åtkomst till kontaktdata per app. För att begära tillgång till kontaktuppgifter, ring
-
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 fotobiblioteket. 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älld, kan en UI-knapp för att välja en kontakt visas.
- För adressbok, ring
ABAddressBookGetAuthorizationStatus
fungera. För Event Kit, ringauthorizationStatusForEntityType:
klass metod förEKEventStore
. För Assets Library, ringauthorizationStatus
klass metod förALAssetsLibrary
. Innebörden av statusvärdena som returneras är följande:- Auktoriseringsstatus ej fastställd—Användaren har ännu inte gjort något val om huruvida den här appen kan komma åt dataklassen.
- Auktoriseringsstatus Begränsad—Denna app 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.
- Auktoriseringsstatus nekad— Användaren nekade uttryckligen åtkomst till dataklassen för den här appen.
- Auktoriseringsstatus Auktoriserad—Denna app har behörighet att komma åt dataklassen.
Apple TV
-
FAST: 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.
-
FAST: Apple TV kan starta om när du använder Remote-appen.
-
FAST: Apple TV kan starta om när systemspråket ändras.
-
FAST: 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.
-
Skärmsläckaren kan återgå till att använda standardbilderna efter installation av uppdateringen.
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 BonjourDNSService*()
API:er som anges nedan. -
Ställer in parametern interfaceIndex till
kDNSServiceInterfaceIndexAny
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 inkDNSServiceFlagsIncludeP2P
flagga vid användningkDNSServiceInterfaceIndexAny
eller ställ ininterfaceIndex
tillkDNSServiceInterfaceIndexP2P
. De berörda API:erna har:DNSServiceBrowse
DNSServiceRegister
DNSServiceResolve
DNSServiceRegisterRecord
DNSServiceQueryRecord
Ordbok
-
FAST: 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ändelsen och/eller påminnelsedatumet, ring till
requestAccessToEntityType:completion:
: metod avEKEventStore
. 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 entitetstypen och alla försök att spara data kommer att misslyckas. - Användaren tillfrågas endast första gången åtkomst begärs; eventuella efterföljande instansieringar av
EKEventStore
kommer att använda befintliga behörigheter. Färdigställandehanteraren anropas i en godtycklig kö.
- Användare kan bevilja eller neka åtkomst till händelse- och påminnelsedata per app. För att begära tillgång till händelsen och/eller påminnelsedatumet, ring till
Game Center
-
FAST: 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.
-
Smakämnen
authenticate
metod avGKLocalPlayer
har tagits bort. Autentisering startar automatiskt när slutförandehanteraren är inställd. -
Från och med iOS 6 beta 4,
GKGameCenterViewController
singleton stöds inte längre. -
Från och med iOS 6 beta 4,
GKScore+Sharing.h file
och tillhörande kategorier tas bort.
icloud
-
När du skapar ett iCloud-konto kan du använda valfritt e-postbaserat Apple-ID eller ditt befintliga iCloud-konto. Om du hade ett MobileMe-konto som du inte flyttade till iCloud kan du använda det Apple-ID:t för att registrera dig för ett nytt iCloud-konto (ingen av dina tidigare MobileMe-data kommer att finnas). Provisioneringsprofiler måste vara aktiverade för iCloud i iOS Provisionsportal. 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-e-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 enme.com
e-postadress. iCloud-användare med@me.com
adresser som har använts med iOS 6 beta 3 eller senare 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 använda en webbläsare för att skicka e-post från sinaicloud.com
adress.@icloud.com
adresser kommer att läggas till inom två veckor efter första användningen av iOS 6.
-
Smakämnen
setSortDescriptors:
metod avNSMetadataQuery
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 använder iCloud för att dela filer mellan de två plattformarna. På iOS bör du vidta åtgärder för att undvika att skapa filer med namn som bara 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 skrivit till skivan.
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
UIDocument
återuppringningar som ska meddelas när konfliktförlorarna har laddats ner och är tillgängliga.
iTunes
-
iTunes 10.6.3 krävs för iOS SDK 6.0.
-
Tidigare offentliga betaversioner av iOS kan inte längre ladda ner iTunes Match-låtar.
Plats
-
I iOS 6 beta 4 infördes ändringar i den nya enumen
CLActivityType
på kärnplats:- ersätta
CLActivityTypeVehicularNavigation
medCLActivityTypeAutomotiveNavigation
. - Lägg till
CLActivityTypeOtherNavigation
för annan fordonsnavigering – t.ex. båtar, tåg eller flygplan.
- ersätta
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. Routingappar som inte anger en täckningsfil under utvecklingen kommer alltid att visas i Maps routings sökresultat.
- API-kompatibilitet kommer att bibehållas (se kända problem nedan).
- Kartor stöds nu i Simulator.
- Kartdata kommer att fortsätta att utvecklas – endast en begränsad mängd högupplösta satellitbilder är för närvarande tillgänglig.
-
Testning och felsökning av täckningsfiler för routingappar 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 .
-
FAST: Maps zoomar inte in på den aktuella platsen när den startas från en tredjepartsapp.
tidningskiosk
-
FAST: Endast enkla HTTP-nedladdningar fungerar med Newsstand.
Passbook
-
Beskrivningsfältet ä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.
-
Passbook i Simulator kräver inte längre
https
/ssl
när du använder awebServiceURL
vid intag av ett pass. -
FAST: Det går inte att visa boardingkort på låsskärmen.
-
Pass kommer inte längre att falla tillbaka till
background.png
ifstrip.png
ingår inte i ditt passpaket. -
Innehållet i
userInfo
ordbok förPKPassLibraryDidChangeNotification
har ändrats vid borttagna pass. Se den senaste dokumentationen för den nyauserInfo
lexikon.
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 Kalender, 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, som finns 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
-
FAST: Bekräftelsepanelen för appradering tar ett tag innan den visas i iOS Simulator.
-
Inga sekretessvarningar visas i iOS Simulator för appar som har åtkomst till foton, kontakter, kalender och påminnelser.
-
Nedladdning av in-app Purchase-värdinnehåll i iOS Simulator stöds inte.
-
När du försöker spela upp ett MP3-ljud i Simulator kommer du att höra ett poppande ljud istället.
Delad fotoström
-
Användare 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 hans iCloud-e-postadress; annars kommer han 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Å.
-
FAST: Om du stänger av delade fotoströmmar kan kameran inte svara; tvångsavsluta kameraappen kommer att lösa problemet.
Social hållbarhet
-
Weibo visas i appen Inställningar endast om ett kinesiskt tangentbord är aktiverat.
-
Smakämnen
requestAccessToAccountsWithType:withCompletionHandler:
metod avACAccountStore
är nu utfasad. För att komma åt användarkonton, användrequestAccessToAccountsWithType:options:completion:
metod.I alternativparametern för den här nya metoden, passeranil
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 iACAccountStore.h
):När du begär åtkomst till Facebook-konton är den enda nyckel som krävs i din alternativordbok
ACFacebookAppIdKey
.ACFacebookPermissionGroupKey
ochACFacebookAppVersionKey
är nu föråldrad.Om du begär ett skriftligt tillstånd nedanACFacebookPermissionsKey
-Till exempelpublish_stream
— du måste ge ett värde förACFacebookAudienceKey
, som kan vara en avACFacebookAudienceEveryone
,ACFacebookAudienceFriends
, ellerACFacebookAudienceOnlyMe
.Du bör inte längre lägga till den här ordboken i din app
Info.plist
fil, som krävdes i beta 1.
Statusfält
-
Det är nu möjligt att ställa in statusfältets nyansparametrar i din app
Info.plist
filea. Du kan göra detta för att säkerställa att statusfältets färg matchar din apps navigeringsfältsfärg under uppstart. För att ställa in statusfältets nyans, lägg tillUIStatusBarTintParameters
nyckeln till dinInfo.plist
filea. Värdet på denna nyckel är en ordbok med lämpliga värden som beskriver navigeringsfältet som din app har vid start. Inuti ordboken ska finnasUINavigationBar
nyckel, som har ett värde som också är en ordbok. Den ordboken innehåller den ursprungliga navigeringsfältets stil (medStyle
nyckel) och om den är genomskinlig (medTranslucent
nycklar). Om navigeringsfältet använder dem kan du också ange dess nyansfärg (medTintColor
nyckel) eller namnet på dess anpassade bakgrundsbild (medBackgroundImage
nyckel).
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:er – inklusive det förUIPopoverController
instans 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 inpresentsWithGesture
egenskapen för din split view-kontroller tillNO
inaktiverar gesten. Att inaktivera gesten avråds dock eftersom användningen bevarar en konsekvent användarupplevelse i alla appar. -
FAST: 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. Detta gör att de fungerar bra med
UIControl
föremål. -
I iOS 6 och senare är
UIWebView
klass målar dess innehåll asynkront. -
Autorotation förändras i iOS 6. I iOS 6 är
shouldAutorotateToInterfaceOrientation:
metod avUIViewController
är utfasad. I dess ställe bör du användasupportedInterfaceOrientationsForWindow:
ochshouldAutorotate
metoder.- Mer ansvar flyttas till appen och appombudet. Nu har iOS-behållare (som t.ex
UINavigationController
) 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 ochUIInterfaceOrientationMaskAllButUpsideDown
för iPhone idiom. - En vystyrenhets gränssnittsorientering som stöds kan ändras över tiden – även en apps gränssnittsorientering som stöds kan ändras över tiden. Systemet frågar 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 återvänder
YES
från dessshouldAutorotate
metod. Systemet skär vystyrenhetens stödda orienteringar med appens stödda orienteringar (som bestäms avInfo.plist
fil eller delegatens appapplication: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 appens
supportedInterfaceOrientationsForWindow:
metod med värdet som returneras avsupportedInterfaceOrientations
metoden för den översta helskärmskontrollenheten. - Smakämnen
setStatusBarOrientation:animated:
metoden är inte helt avskaffad. Men nu fungerar det bara omsupportedInterfaceOrientations
metoden för den översta fullskärmskontrollen återvänder0
. 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 implementerar
shouldAutorotateToInterfaceOrientation:
metoden får inte de nya autorotationsbeteendena. (Med andra ord faller de inte tillbaka till att använda appen, appombudet ellerInfo.plist
fil för att avgöra vilka orienteringar som stöds.) IställetshouldAutorotateToInterfaceOrientation:
metod används för att syntetisera informationen som skulle returneras avsupportedInterfaceOrientations
metod.
- Mer ansvar flyttas till appen och appombudet. Nu har iOS-behållare (som t.ex
-
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 ärviewWillUnload
ochviewDidUnload
metoder förUIViewController
är nu utfasad. Om du använde dessa metoder för att släppa data, använddidReceiveMemoryWarning
metod 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
viewWillLayoutSubviews
metod och justera layouten med hjälp av vyns gränsrektangel.
- 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
-
Det stöds inte att ställa in värden för
shadowOffset
orshadowColor
egenskaper hos enUILabel
objekt om dessattributedText
egenskapen innehåller en giltig tillskriven sträng. Använd iställetNSShadowAttributeName
attribut för den tillskrivna strängen för att ställa in skuggan. -
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 medtextAlignment
egendom avUILabel
eller tillhandahålls som inriktningsparameter tilldrawInRect:withFont:lineBreakMode:alignment:
metod avNSString
. -
Smakämnen
setContentStretch:
metod avUIView
har fasats ut i denna betaversion. För att uppnå samma effekt, användresizableImageWithCapInsets:
metod avUIImage
och visa bilden med enUIImageView
. -
Smakämnen
resizableImageWithCapInsets:
metod avUIImage
ändrar effektivt bildernas storlek genom att sida vid sida. Som en prestandaoptimering använder den sträckning snarare än plattsättning när användaren inte skulle kunna se skillnad, till exempel när en enskild kolumn eller rad sträcks ut. Men under vissa omständigheter kanske användaren faktiskt vill sträcka ut en del av en bild. I iOS 6 ärresizableImageWithCapInsets:resizingMode:
metoden gör det möjligt för den som ringer att ange ett läge för ändring av storleken vid sida eller sträckning. -
Smakämnen
UICollectionViewLayout
klass har ändrats: Den nedre kanten av enUILabel
synen skiljer sig nu från dess baslinje.Tidigare tolkade automatisk layout botten av enUILabel
vara 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 automatisk layoutUILayoutAttributeBottom
som botten av textrutan (förutsatt att etiketten inte är större än dess inneboende innehållsstorlek) ochUILayoutAttributeBaseline
som grundlinjen 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.- 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å samma krokar kan användas för rotationer såväl 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.
-
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 layout
UIScrollView
:- I allmänhet betraktar den automatiska layouten de övre, vänstra, nedre och högra kanterna av en vy som de synlig kanter. 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 tillsynen gör det inte ändra vyns position.
- Smakämnen
UIScrollView
klass rullar dess innehåll genom att ändra ursprunget för dess gränser. För att få detta att fungera med automatisk layout, innebörden av de övre, vänstra, nedre och högra kanternainom en rullningsvy betyder 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 med
intrinsicContentSize
metod som används för automatisk layout.) För att ändra storlek på rullvynsframe
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å rullningsvyn vara knutna till vyer utanför av 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:
- Placera och storleksanpassa din rullningsvy med begränsningar utanför rullningsvyn – det vill säga
translatesAutoresizingMaskIntoConstraints
fastigheten är inställd påNO
. - Skapa en slätt
UIView
innehå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;
- Ställ in innehållsstorleken för rullningsvyn så att den matchar storleken på innehållsvyn:
[scrollView setContentSize:CGMakeSize(contentWidth,contentHeight)];
- 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 anropa
systemLayoutSizeFittingSize:
metoden (medUILayoutFittingCompressedSize
alternativ) för att hitta den storlek du vill använda för din innehållsvy ochcontentSize
egenskapen för rullningsvyn.
- Placera och storleksanpassa din rullningsvy med begränsningar utanför rullningsvyn – det vill säga
- Ren autolayoutmetod:
- I det här fallet,
translatesAutoresizingMaskIntoConstraints
måste ställas in påNO
på alla inblandade synpunkter. - Placera och ändra storlek på din rullningsvy med begränsningar utanför rullningsvyn.
- 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 den
viewDidLoad
metod för din vykontroller, skulle du inkludera kod som följande:UIScrollView *scrollView = [[UIScrollView alloc] init];
UIImageView *imageView = [[UIImageView alloc] init];
[imageView setImage:[UIImage imageNamed:"MyReallyBigImage"]];
[self.view addSubview:scrollView];
[scrollView addSubview:imageView];
scrollView.translatesAutoresizingMaskIntoConstraints = NEJ;
imageView.translatesAutoresizingMaskIntoConstraints = NEJ;
NDictionary *viewsDictionary = NDictionaryOfVariableBindings(scrollView, imageView);
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" optioner:0 mätvärden: 0 visningarDictionary:viewsDictionary]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|" optioner:0 mätvärden: 0 visningarDictionary:viewsDictionary]];
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[imageView]|" optioner:0 mätvärden: 0 visningarDictionary:viewsDictionary]];
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[imageView]|" optioner:0 mätvärden: 0 visningarDictionary:viewsDictionary]];
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.
- I det här fallet,
- Blandat tillvägagångssätt:
-
Med tanke på denna vyhierarki:
ContainerView
| OddHeightView
| | EvenHeightView
| OtherFixedHeightView
och dessa begränsningar:
EvenHeightView.centerY == OddHeightView.centerY
EvenHeightView.bottom (eller baslinje) == OtherFixedHeightView.bottom (eller baslinje)
OtherFixedHeightView.top == ContainerView.top +
i iOS 6 beta 4, på icke-Retina-skärmar, botten (eller baslinjer) av
EvenHeightView
ochOtherFixedHeightView
var avstängd med en pixel och utvecklaren kunde inte göra något åt det. Det här problemet är nu åtgärdat.I iOS 6 beta 4 finns det ett känt fel att när du har en begränsning med ett objekt som är en rullningsvy, är det andra objektet en avkomling av den rullningsvyn, och du lägger till begränsningen till en förfader till den rullningsvyn, då kan begränsningen sluta fungera korrekt. Lösningen är att lägga till sådana begränsningar endast till själva rullningsvyn, inte till någon gammal förfader.
- Före ändringarna integrerade layoutmotorn inte positionsvariablerna för vyerna, och dessa begränsningar var alltid tillfredsställande:
ContainerView
| OddWidthView
| EvenWidthView
OddWidthView.centerX == ContainerView.centerX
EvenWidthView.centerX == ContainerView.centerX
EvenWidthView.centerX == OddWidthView.centerX
Nu integrerar layoutmotorn positionsvariablerna (x och y) såväl som dimensionsvariabler (bredd och höjd). Detta betyder att den kommer att försöka uppfylla de tre begränsningarna med en heltal lösning, vilket kanske inte är möjligt, och därmed loggar att dessa begränsningar är otillfredsställande. I det här fallet, och i alla analoga fall, behöver utvecklare bara ta bort den redundanta begränsningen (eller begränsningarna). I exemplet ovan löser du problemet om du tar bort någon av de tre begränsningarna.
- Före ändringarna integrerade layoutmotorn inte positionsvariablerna för vyerna, och dessa begränsningar var alltid tillfredsställande:
Safari och WebKit
-
WebKit på iOS stöder nu
requestAnimationFrame
ochcancelAnimationFrame
metoder i JavaScript, som beskrivs här: http://www.w3.org/TR/animation-timing/.Standardkvoten för app-cache har ökat från 5 MB till 25 MB.- Observera att eftersom specifikationen fortfarande är i Working Draft-tillståndet har dessa metoder
webkit
prefix, så de harwindow.webkitRequestAnimationFrame
ochwindow.webkitCancelAnimationFrame
.
- Observera att eftersom specifikationen fortfarande är i Working Draft-tillståndet har dessa metoder
-
JPEG-subsamplingströskeln har ökat från 2 MP (megapixel) till 5 MP på all hårdvara som stöds förutom iPhone 3GS och iPod touch (4:e generationen).
-
Support har lagts till för
<input type="file">
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 den här formulärkontrollen 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 en
UIWebView
objekt kan lagras i en katalog som kommer att säkerhetskopieras. För att möjliggöra säkerhetskopiering av denna data, ställ inWebKitStoreWebDataForBackup
nyckel tillYES
i appens användarstandarder. Detta bör endast göras om din app förlitar sig på webbinnehållsdata som inte kan laddas om. Om dinUIWebView
objekt öppnar länkar till godtyckligt webbinnehåll, denna nyckel ska vara inställd 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
feed:
RSS/ATOM-scheman. 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
-webkit-transform: preserve-3d
frivillig. 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. Vänligen 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, inbäddade YouTube-webbadresser i form av
http://www.youtube.com/watch?v=oHg5SJYRHA0
kommer inte att fungera längre. 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 här: https://developers.google.com/youtube/player_parameters. -
I iOS 6 är
keyboardDisplayRequiresUserAction
egendom lades tillUIWebView
klass. Egenskapen har som standardYES
, vilket betyder att ringafocus()
på ett formulärelement kommer inte att visa tangentbordet. Genom att ändra fastigheten tillNO
, ett JavaScript-anrop tillfocus()
på ett formulärelement fokuserar elementet och tar fram tangentbordet automatiskt. -
Från och med iOS 6, ringer
focus()
på ett formulärelement i en webbapp fokuserar elementet.
Beta 4? Det säger mig att det är beta 3...
Beta 3 har varit tillgänglig i cirka 3 veckor.
Jag har beta 3 installerad och när jag söker efter uppdatering står det "kan inte leta efter uppdatering" och jag har också det registrerade UID:t
trängsel på Apples servrar...
Ja, det är det som är problemet.
Jag installerade även iOS 6 beta 3 och när jag uppdaterar så dyker beta 3 upp!!!!
@papi det här är ditt problem, beta 3 dyker upp, var glad att något dyker upp.
Inget är perfekt.
@zaone vet du vad som är nytt i beta 4, kan du lägga upp en lista?
Jag kan knappt ladda ner det från utvecklingscentret, det fungerar inte från telefonen.
@zaone har du ett utvecklarkonto?
Som jag skrev tidigare har jag beta 3 och den informerar mig om att den också uppdateras till beta 3. Jag är nyfiken på vilken build som kommer att installeras på min telefon då jag ser att den laddas ner, väldigt långsamt, men det kommer. Jag gör OTA-uppdateringen
nu uppdaterar jag den till beta 4, från iPhone. Det fungerade för mig.
[…] I kväll släppte Apple-företaget iOS 6 beta 4 build 10A5476e för iDevice-ägare, men vissa ser uppdateringen som en för iOS 6 beta 3, medan [...]
iOS 6 uppdaterar basband... Jag har en iPhone 4 med basband 4.12.01 kodad i Schweiz
[…] Den 6 augusti släppte Apple iOS 6 beta 4 för iOS-apputvecklare och sedan dess har ingen annan betaversion av detta system […]