Apple julkaisee iOS 6 beta 4:n

  Muutama minuutti sitten Apple julkaisi iOS beta 6 4 iOS-sovelluskehittäjille. Uudessa iOS 6 beta 4:ssä on koontiversio 10A5376, mutta joillekin se näkyy versiona beta 3, ja toisille alla oleva virhe ilmestyy palautusta yritettäessä. Toistaiseksi näyttää siltä, ​​​​että Apple-järjestelmässä on joitain ongelmia, mutta se oli odotettavissa ottaen huomioon, että puhumme beta-versiosta. iOS 6:n uusi beetaversio on saatavilla myös Applen verkkosivuston kehittäjille omistetussa portaalissa, joten jos et voi ladata sitä terminaalista, voit ladata sen sieltä.

Tilikehys

  • Kun pyydät pääsyä Facebook-tileihin, ainoa asetussanakirjassasi vaadittava avain on ACFacebookAppIdKeyACFacebookPermissionGroupKey jaACFacebookAppVersionKey on nyt vanhentunut.Jos pyydät kirjallista lupaa alla ACFacebookPermissionsKey, Kuten publish_stream, sinun on annettava arvo ACFacebookAudienceKey, joka voi olla yksiACFacebookAudienceEveryoneACFacebookAudienceFriendstai ACFacebookAudienceOnlyMe.

Address Book

  • Kiinteä: Kun sovellus on tuoreessa tietosuojatilassa ja yrittää esittää a ABNewPersonViewController, käyttäjä ei voi hylätä näkymäohjainta oikein, vaikka käyttäjä sallisi pääsyn yhteystietoihin. Käyttäjän on pakko sulkea sovellus ja käynnistää se uudelleen.

  • Yhteystietojen käyttöoikeuden pyytäminen:

    • Käyttäjät voivat myöntää tai estää pääsyn yhteystietoihin sovelluskohtaisesti. Pyydä pääsyä yhteystietoihin soittamalla numeroon ABAddressBookRequestAccessWithCompletiontoiminto soittamisen jälkeen ABAddressBookCreateWithOptions toimia.  ABAddressBookRequestAccessWithCompletion toiminto ei estä sovellusta, kun käyttäjää pyydetään myöntämään tai kieltämään pääsy. Kunnes käyttöoikeus on myönnetty, ABAddressBookRef objekti ei sisällä yhteystietoja, ja kaikki yhteystietojen muokkaamisyritykset epäonnistuvat a kABOperationNotPermittedByUserError virhe. Käyttäjä saa kehotteen vain ensimmäisen kerran, kun käyttöoikeutta pyydetään; mahdolliset myöhemmät puhelut numeroonABAddressBookCreateWithOptions käyttää olemassa olevia käyttöoikeuksia. Täydennyskäsittelijä kutsutaan mielivaltaiseen jonoon. Jos ABAddressBookRef objektia käytetään koko sovelluksessa, niin kaikki käyttö on lähetettävä samaan jonoon käyttöä varten ABAddressBookRef lankaturvallisella tavalla.
  • Tarkistetaan käyttöoikeuden tilaa:

    • Sovellus voi käyttää valtuutustilan sovellusliittymää tarkistaakseen, voiko se käyttää yhteystietoja, kalentereita, muistutuksia tai valokuvakirjastoa. Tämä API on riippumaton pyynnön käyttöliittymästä, eikä se kehota käyttäjää myöntämään tai estämään käyttöoikeutta. Tämän API:n avulla sovellus voi säätää niiden käyttöliittymäelementtien näyttöä, jotka pääsevät tietoluokkaan. Jos esimerkiksi yhteystietoihin pääsy on valtuutettu tai sitä ei ole määritetty, käyttöliittymäpainike voidaan näyttää yhteystiedon valitsemista varten.
    • Osoitekirjaa varten soita ABAddressBookGetAuthorizationStatus toiminto. Tapahtumapakettia varten soita numeroon authorizationStatusForEntityType: luokan menetelmäEKEventStore. Omaisuuskirjastoa varten soita numeroon authorizationStatus luokan menetelmä ALAssetsLibrary. Palautettavien tila-arvojen merkitys on seuraava:
      • Valtuutuksen tilaa ei ole määritetty—Käyttäjä ei ole vielä tehnyt valintaa siitä, pääseekö tämä sovellus tietoluokkaan.
      • Valtuutuksen tila rajoitettu-Tällä sovelluksella ei ole lupaa käyttää tietoluokkaa. Käyttäjä ei voi muuttaa tämän sovelluksen tilaa, mikä saattaa johtua aktiivisista rajoituksista, kuten käytössä olevista lapsilukkoista.
      • Valtuutuksen tila evätty-Käyttäjä on nimenomaisesti evännyt pääsyn tämän sovelluksen tietoluokkaan.
      • Valtuutuksen tila Valtuutettu-Tämä sovellus on valtuutettu käyttämään tietoluokkaa.

Apple TV

  • Kiinteä: Joissakin tapauksissa näytössä voi näkyä väärä resoluutio. Käynnistä Apple TV uudelleen, jotta se palaa oikeaan resoluutioon.

  • Kiinteä: Apple TV saattaa käynnistyä uudelleen Remote-sovelluksen käytön aikana.

  • Kiinteä: Apple TV saattaa käynnistyä uudelleen, kun järjestelmän kieltä vaihdetaan.

  • Kiinteä: Photo Stream ei lataudu, kun kirjaudut sisään toisen kerran. Ratkaise ongelma käynnistämällä Apple TV uudelleen.

  • Musiikki ei toistu valokuvadiaesitysten aikana.

  • Näytönsäästäjä saattaa palata käyttämään oletuskuvia päivityksen asentamisen jälkeen. 

Bonjour

  • NSNetService luokan ja CFNetService API:t eivät sisällä oletusarvoisesti P2P-liittymiä. Sovelluksen on käytettävä Bonjouria, jotta se voi selata, rekisteröidä tai ratkaista palveluita P2P-rajapintojen kautta DNSService*() Alla mainitut API:t.

  • Asetetaan interfaceIndex-parametriksi kDNSServiceInterfaceIndexAny seuraavissa API:t eivät sisällä oletusarvoisesti P2P-liittymiä. Jos haluat sisällyttää P2P-liitännät, sinun on nyt asetettava kDNSServiceFlagsIncludeP2P lippua käytettäessä kDNSServiceInterfaceIndexAny tai aseta interfaceIndex että kDNSServiceInterfaceIndexP2P. Sovellusliittymillä, joita asia koskee, on:

    • DNSServiceBrowse
    • DNSServiceRegister
    • DNSServiceResolve
    • DNSServiceRegisterRecord
    • DNSServiceQueryRecord

Sanakirja

  • Kiinteä: Sanakirjoissa on tunnettu ongelma, kun yritetään määritellä sanaa millä tahansa muulla kielellä kuin englannin tai japanin kielellä. Kun viitekirjasto esitetään, käyttäjälle annetaan mahdollisuus ladata sanakirja - lataus ei välttämättä käynnisty. Käyttäjä voi hylätä latauspyynnön napauttamalla ponnahdusikkunan ulkopuolella iPadissa tai napauttamalla Valmis-painiketta iPhonessa tai iPod touchissa.

Tapahtumasarja

  • Kalenterien tai muistutusten käyttöoikeuden pyytäminen:

    • Käyttäjät voivat myöntää tai estää pääsyn tapahtuma- ja muistutustietoihin sovelluskohtaisesti. Voit pyytää pääsyä tapahtumaan ja/tai muistutuspäivämäärään soittamalla numeroonrequestAccessToEntityType:completion:: menetelmä EKEventStore. Tämä ei estä sovellusta, kun käyttäjää pyydetään myöntämään tai estämään pääsy. Ennen kuin jollekin entiteettityypille on myönnetty käyttöoikeus, tapahtumasäilö ei sisällä kalentereita kyseiselle entiteettityypille ja kaikki tietojen tallennusyritykset epäonnistuvat.
    • Käyttäjä saa kehotteen vain ensimmäisen kerran, kun käyttöoikeutta pyydetään; mahdolliset myöhemmät ilmentymät EKEventStore käyttää olemassa olevia käyttöoikeuksia. Täydennyskäsittelijä kutsutaan mielivaltaiseen jonoon.

Game Center

  • Kiinteä: Kun luot uuden Game Center -tilin sovelluksen sisällä iPadissa, ponnahdusikkuna, jossa voit valita syntymäpäiväsi kuukauden, tulee näkyviin ilman valittavaa sisältöä.

  • authenticate menetelmä GKLocalPlayer on poistettu. Todennus alkaa automaattisesti, kun viimeistelyn käsittelijä on asetettu.

  • iOS 6 beta 4:stä alkaen, GKGameCenterViewController singletonia ei enää tueta.

  • iOS 6 beta 4:stä alkaen, GKScore+Sharing.h file ja niihin liittyvät luokat poistetaan.

iCloud

  • Kun luot iCloud-tilin, voit käyttää mitä tahansa sähköpostipohjaista Apple ID:tä tai olemassa olevaa iCloud-tiliäsi. Jos sinulla oli MobileMe-tili, jota et siirtänyt iCloudiin, voit käyttää tätä Apple ID:tä uuden iCloud-tilin luomiseen (mitään aiemmista MobileMe-tiedoistasi ei tarvitse olla käytössä iOS:ssä). Käyttöönottoportaali. Ota iCloudin hallintaprofiili käyttöön siirtymällä iOS-hallintaportaalin App ID -osioon ja määrittämällä sovellustunnuksesi iCloudille. Kun olet ottanut App ID:n käyttöön iCloudille, luo hallintaprofiilisi uudelleen ottaaksesi ne käyttöön iCloudissa.

    • icloud.com sähköpostiosoitteet ovat nyt saatavilla iCloud-sähköpostin käyttäjille. Käyttäjät, jotka rekisteröivät uusia Apple ID -tunnuksia tai ottavat Mail-palvelun käyttöön iCloud-tilillään ensimmäistä kertaa, saavat automaattisesti @icloud.com sähköpostiosoite a:n sijaan me.com sähköpostiosoite. iCloud-käyttäjät @me.com osoitteet, joita on käytetty iOS 6 beta 3:n tai uudemman kanssa, saavat @icloud.com sähköpostiosoite, joka vastaa heidän omaansa @me.com osoite.
    • icloud.com sähköpostia ei voi lähettää osoitteesta www.icloud.com. Käyttäjien tulee käyttää http://beta.icloud.com tällä hetkellä, jos he haluavat lähettää sähköpostinsa verkkoselaimellaicloud.com osoite.
    • @icloud.com osoitteet lisätään kahden viikon kuluessa iOS 6:n ensimmäisestä käytöstä.
  • setSortDescriptors: menetelmä NSMetadataQuery ei ole tuettu.

  • iOS 6:ssä Data Protectionilla suojattuja tiedostoja ei voi käyttää iCloud Storage API:iden kanssa.

  • Tiedostonimien kirjainkoolla ei ole merkitystä OS X:ssä, mutta iOS:ssä. Tämä voi johtaa ongelmiin käytettäessä iCloudia tiedostojen jakamiseen kahden alustan välillä. iOS:ssä sinun tulee välttää luomasta tiedostoja, joiden nimet eroavat vain kirjainkoon mukaan.

  • Koordinoitujen lukutoimintojen käyttäytyminen iCloud-dokumenteissa on muuttunut:Aiemmissa iOS-julkaisuissa, kun sovelluksesi suoritti koordinoidun lukutoiminnon tiedostolle tai paketille ja iCloud-demoni havaitsi, että tuotteesta oli saatavilla uudempi versio, koordinoitu lukutoiminto estettiin, kunnes kohteen uudempi versio ladattiin ja kirjoitettu levylle.

    iOS 6 beta 3:sta alkaen, kun aloitat koordinoidun lukutoiminnon tiedostolle tai paketille, jolle sinulla on jo paikallinen versio, koordinoitu luku myönnetään mahdollisimman pian ja uusi versio, jos sellainen on, ladataan tausta. Tämä puhelu estetään lataussyistä vain, jos sinulla ei ole tiedoston versiota saatavilla paikallisesti.

    Lisäksi, kun tiedosto on ristiriidassa, iCloud-daemon ei odota, kunnes sillä on kaikki tiedoston ristiriidan häviäjät käytettävissä, jotta tiedosto saataisiin sovelluksesi käyttöön. Se asettaa ristiriitaisen tiedoston eri versiot saataville niin pian kuin mahdollista. Sovelluksesi voi käyttää olemassa olevaa tiedostojen koordinointia ja UIDocument takaisinsoittoja, joista ilmoitetaan, kun konfliktin häviäjät on ladattu ja saatavilla.

iTunes

  • iTunes 10.6.3 vaaditaan iOS SDK 6.0:lle.

  • iOS:n aiemmat julkiset betaversiot eivät voi enää ladata iTunes Match -kappaleita.

Sijainti

Kartat

  • iOS 6:ssa ja sitä uudemmissa versioissa Map Kit on rakennettu Applen isännöimälle uudelle infrastruktuurille. Aiemmat iOS-versiot käyttävät edelleen Googlen palvelua. Reitityssovellukset, jotka eivät määritä kattavuustiedostoa kehityksen aikana, näkyvät aina Mapsin reitityshakutuloksissa.

    • API-yhteensopivuus säilyy (katso tunnetut ongelmat alla).
    • Simulaattori tukee nyt karttoja.
    • Karttatiedot kehittyvät edelleen – tällä hetkellä saatavilla on vain rajoitettu määrä korkearesoluutioisia satelliittikuvia.
  • Reitityssovellusten peittotiedostojen testausta ja virheenkorjausta tuetaan vain kehityksen aikana Xcode Run -työnkulun kautta. (Voit määrittää kattavuustiedoston tietylle Run-mallille käyttämällä kaavioeditorin Suorita-osion Asetukset-osiota.) Sovellukset, jotka on arkistoitu ja jaettu (App Storen ulkopuolella) laitteisiin, eivät pääse käsiksi sovelluksen kattavuustiedostoihin. .

  • Kiinteä: Maps ei lähennä nykyiseen sijaintiin, kun se käynnistetään kolmannen osapuolen sovelluksesta.

lehtikioski

  • Kiinteä: Vain yksinkertaiset HTTP-lataukset toimivat Lehtikioskissa.

vastakirja

  • Kuvaus-kenttä on nyt pakollinen kenttä passille. Kaikkia ilman sitä luotuja kortteja ei voida vahvistaa, eikä niitä voida käyttää.

  • Passbook Simulatorissa ei enää vaadi https/ssl kun käytät webServiceURL nieltäessä passia.

  • Kiinteä: Tarkastuskortteja ei voi näyttää lukitusnäytöllä.

  • Passit eivät enää palaa background.png if strip.png ei sisälly passipakettiin.

  • Sivuston sisältö userInfo sanakirja for PKPassLibraryDidChangeNotification ovat muuttuneet poistettujen passien osalta. Katso uusimmasta dokumentaatiosta uutta userInfo sanakirja.

Turvallisuus

  • IOS 5 ei tue varmenteen allekirjoittamista MD5-allekirjoituksella. Varmista, että varmenteissa käytetään SHA1- tai SHA2-pohjaisia ​​allekirjoitusalgoritmeja.

  • iOS 6:ssa on paranneltu kalenterin, muistutusten, yhteystietojen ja valokuvien tietosuojan hallintaa.

    • Käyttäjät näkevät käyttöoikeusikkunat, kun sovellus yrittää käyttää jotakin näistä tietotyypeistä. Käyttäjä voi ottaa käyttöön ja poistaa käytöstä Asetukset > Tietosuoja.
    • Kehittäjät voivat asettaa "tarkoitusmerkkijonon" jokaiselle eristetyn datan luokalle. iOS näyttää tämän merkkijonon käyttäjille auttaakseen heitä ymmärtämään, miksi heidän tietojaan pyydetään. Nämä merkkijonot voidaan lisätä Xcoden projektieditorilla, joka on Info-välilehdellä. Asiaankuuluvat avainten nimet alkavat merkkijonolla "Privacy -".
    • Event Kit- ja Address Book -kehykseen on tehty muutoksia, jotka auttavat kehittäjiä käyttämään tätä ominaisuutta.

Simulaattori

  • Kiinteä: Sovelluksen poiston vahvistuspaneelin näkyminen iOS-simulaattorissa kestää hetken.

  • iOS Simulatorissa ei näytetä tietosuojavaroituksia sovelluksille, jotka käyttävät kuvia, yhteystietoja, kalenteria ja muistutuksia.

  • In-App Purchase -isännöidyn sisällön lataamista iOS-simulaattorissa ei tueta.

  • Kun yrität toistaa MP3-ääntä Simulaattorissa, kuulet sen sijaan poksahtavan äänen.

Jaettu valokuvavirta

  • Käyttäjien on siirryttävä kohtaan Asetukset > iCloud varmistaakseen, että he saavat Jaetun valokuvavirran ilmoitukset.

  • Jotta voit jakaa valokuvavirran iOS 6 -betaversion kanssa, sinun on kutsuttava joku hänen iCloud-sähköpostiosoitteellaan. muuten hän ei saa kutsua.

  • Päivittäminen iOS 6 beta 1:stä beta 2:een saa laitteesi lataamaan uudelleen kaikki jaetut valokuvavirtasi.

  • Shared Photo Stream -ominaisuus on asetettu pois päältä, kun päivitetään iOS 6:n beta 1:stä myöhempään julkaisuun. Oletusasetuksen tulee olla PÄÄLLÄ.

  • Kiinteä: Jaettujen valokuvavirtojen poistaminen käytöstä saattaa jättää kameran reagoimatta. Kamera-sovelluksen pakottaminen sulkee tämän ongelman.

sosiaalinen

  • Weibo näkyy Asetukset-sovelluksessa vain, jos kiinalainen näppäimistö on käytössä.

  • requestAccessToAccountsWithType:withCompletionHandler: menetelmä ACAccountStore on nyt poistettu käytöstä. Päästäksesi käyttäjätileihin, käytärequestAccessToAccountsWithType:options:completion: menetelmällä.Syötä tämän uuden menetelmän asetukset-parametrissa nil päästäksesi Twitter- ja Weibo-tileihin. Päästäksesi Facebook-tileihin, välitä sanakirja seuraavilla avaimilla (jotka on dokumentoitu ACAccountStore.h):

    Kun pyydät pääsyä Facebook-tileihin, ainoa asetussanakirjassasi vaadittava avain on ACFacebookAppIdKeyACFacebookPermissionGroupKey jaACFacebookAppVersionKey on nyt vanhentunut.Jos pyydät kirjallista lupaa alla ACFacebookPermissionsKey-kuten publish_stream– Sinun on annettava arvo ACFacebookAudienceKey, joka voi olla yksiACFacebookAudienceEveryoneACFacebookAudienceFriendstai ACFacebookAudienceOnlyMe.

    Sinun ei pitäisi enää lisätä tätä sanakirjaa sovellukseesi Info.plist tiedostoa, kuten beta 1:ssä vaadittiin.

Status Bar

  • Nyt on mahdollista asettaa tilapalkin sävyparametreja sovelluksessasi Info.plist filee. Voit tehdä tämän varmistaaksesi, että tilapalkin väri vastaa sovelluksesi navigointipalkin väriä käynnistyksen aikana. Aseta tilapalkin sävy lisäämällä UIStatusBarTintParameters avain sinun Info.plist filee. Tämän avaimen arvo on sanakirja, jossa on asianmukaiset arvot, jotka kuvaavat sovelluksesi käynnistyspalkkia. Sanakirjan sisällä pitäisi olla UINavigationBar avain, jonka arvo on myös sanakirja. Sanakirja sisältää alkuperäisen navigointipalkin tyylin ( Style avain) ja onko se läpikuultava ( Translucent avaimet). Jos navigointipalkki käyttää niitä, voit myös määrittää sen sävyn värin ( TintColor avain) tai sen mukautetun taustakuvan nimi (ja BackgroundImage näppäin).

UIKit

  • iOS 5.1:ssa UISplitViewController luokka ottaa käyttöön liukuvan esitystyylin esittäessään vasemmanpuoleista näkymää (näkyy aiemmin vain Mailissa). Tätä tyyliä käytetään, kun esitys aloitetaan joko olemassa olevalla delegointimenetelmien tarjoamalla palkkipainikekohdalla tai pyyhkäisyeleellä oikeanpuoleisessa näkymässä. Tämän toiminnan ja kaikkien olemassa olevien sovellusliittymien, mukaan lukien sovellusliittymän, saavuttaminen ei vaadi ylimääräistä sovellusliittymän käyttöönottoa UIPopoverController edustajan toimittama esimerkki – jatkaa toimintaansa entiseen tapaan. Jos ele ei tue sovelluksessasi, aseta presentsWithGesture jaetun näkymän ohjaimesi ominaisuus NO poistaa eleen käytöstä. Eleen poistamista käytöstä ei kuitenkaan suositella, koska sen käyttö säilyttää yhdenmukaisen käyttökokemuksen kaikissa sovelluksissa.

  • Kiinteä: iOS 6:ssa on tehty muutoksia, jotta sinun ei enää tarvitse määrittää edustajaa ja ottaa käyttöön menetelmää yhden sormen ja yhden kosketuksen eletunnistimille. Tämä saa ne toimimaan hyvin UIControl esineitä.

  • iOS 6:ssa ja uudemmissa UIWebView luokka maalaa sisällön asynkronisesti.

  • Autorotaatio muuttuu iOS 6:ssa. iOS 6:ssa shouldAutorotateToInterfaceOrientation: menetelmä UIViewController on vanhentunut. Sen sijaan kannattaa käyttääsupportedInterfaceOrientationsForWindow: ja shouldAutorotate menetelmiä.

    • Enemmän vastuuta siirtyy sovellukselle ja sovelluksen edustajalle. Nyt iOS-säiliöt (esim UINavigationController) älä keskustele lastensa kanssa päättääkseen, pitäisikö heidän kiertää automaattisesti. Oletusarvoisesti sovelluksen ja näkymäohjaimen tuetut käyttöliittymäsuunnat on asetettu UIInterfaceOrientationMaskAll iPad idiomille jaUIInterfaceOrientationMaskAllButUpsideDown iPhone idiomille.
    • Näkymänohjaimen tuetut käyttöliittymäsuunnat voivat muuttua ajan myötä – jopa sovelluksen tuetut käyttöliittymäsuunnat voivat muuttua ajan myötä. Järjestelmä kysyy ylimmäiseltä koko näytön ohjaimelta (yleensä juurinäkymäohjaimelta) sen tuetut käyttöliittymäsuunnat aina, kun laite pyörii tai aina, kun näkymäohjain esitetään koko näytön modaalisella esitystyylillä. Lisäksi tuetut suunnat haetaan vain, jos tämä näkymäohjain palaa YES siitä shouldAutorotate menetelmä. Järjestelmä leikkaa näkymäohjaimen tuetut suunnat sovelluksen tukemien suuntausten kanssa (määritettynä Info.plist tiedosto tai edustajan sovellusapplication:supportedInterfaceOrientationsForWindow: menetelmä) määrittääksesi, kierretäänkö.
    • Järjestelmä määrittää, tuetaanko suuntaa, leikkaamalla sovelluksen palauttaman arvon supportedInterfaceOrientationsForWindow: menetelmän palauttamalla arvolla supportedInterfaceOrientations ylimmän koko näytön ohjaimen menetelmä.
    • setStatusBarOrientation:animated: menetelmää ei ole kokonaan poistettu. Se toimii nyt kuitenkin vain, jos supportedInterfaceOrientations ylimmän koko näytön ohjaimen menetelmä palauttaa 0. Tämä asettaa vastuun varmistaa, että tilapalkin suunta on johdonmukainen, soittajan käsissä.
    • Yhteensopivuuden varmistamiseksi tarkastele ohjaimia, jotka edelleen toteuttavat shouldAutorotateToInterfaceOrientation: menetelmä ei saa uutta autorotaatiokäyttäytymistä. (Toisin sanoen he eivät palaa käyttämään sovellusta, sovelluksen edustajaa tai Info.plist tiedosto tuetun suunnan määrittämiseksi.) Sen sijaanshouldAutorotateToInterfaceOrientation: menetelmää käytetään syntetisoimaan tiedot, jotka palautettaisiin supportedInterfaceOrientations menetelmällä.
  • willRotateToInterfaceOrientation:duration:willAnimateRotationToInterfaceOrientation:duration:ja didRotateFromInterfaceOrientation: menetelmiä ei enää kutsuta millään näkymäohjaimella, joka tekee koko näytön esityksen itsestään – esimerkiksi kutsumalla presentViewController:animated:completion:.iOS 6:ssa viewWillUnload ja viewDidUnload menetelmät UIViewController on nyt poistettu käytöstä. Jos käytit näitä menetelmiä tietojen vapauttamiseen, käytä niitädidReceiveMemoryWarning menetelmän sijaan. Voit myös käyttää tätä menetelmää viittausten vapauttamiseen näkymäohjaimen näkymään, jos sitä ei käytetä. Sinun on testattava, että näkymä ei ole ikkunassa ennen kuin teet tämän.

    • Varmista, että sovelluksesi eivät käytä näitä menetelmiä alinäkymien asettelun hallintaan. Sen sijaan heidän tulisi käyttää näkymäohjaintaviewWillLayoutSubviews menetelmää ja säädä asettelua näkymän rajojen suorakulmion avulla.
  • Ei tueta arvojen asettamista kohteelle shadowOffset or shadowColor ominaisuudet a UILabel vastustaa, jos se on attributedText ominaisuus sisältää kelvollisen määritemerkkijonon. Käytä sen sijaan NSShadowAttributeName määritetyn merkkijonon attribuutti asettaaksesi varjon.

  • Yhteensopivuussyistä johtuen NSBaselineOffsetAttributeName attribuuttia ei enää tueta iOS 6:ssa.

  • NSTextAlignmentNatural arvoa ei tueta, ja se aiheuttaa poikkeuksen, kun sitä käytetään textAlignment Omaisuutta UILabel tai toimitetaan kohdistusparametrina drawInRect:withFont:lineBreakMode:alignment: menetelmä NSString.

  • setContentStretch: menetelmä UIView on vanhentunut tässä beta-versiossa. Saman vaikutuksen saavuttamiseksi käytä resizableImageWithCapInsets: menetelmä UIImageja näytä kuva a UIImageView.

  • resizableImageWithCapInsets: menetelmä UIImage muuttaa kuvien kokoa tehokkaasti laatoituksella. Suorituskyvyn optimoinnissa se käyttää venytystä laatoituksen sijaan silloin, kun käyttäjä ei pysty erottamaan eroa, esimerkiksi kun yhtä saraketta tai riviä venytetään. Tietyissä olosuhteissa käyttäjä saattaa kuitenkin haluta venyttää kuvan osaa. iOS 6:ssa resizableImageWithCapInsets:resizingMode: -menetelmän avulla soittaja voi määrittää laatoitus- tai venytyskoonmuutostilan.

  • UICollectionViewLayout luokka on muuttunut: A:n alareuna UILabel näkymä on nyt erilainen kuin sen perusviiva.Aikaisemmin automaattinen asettelu tulkitsi a:n alaosan UILabel olla sama kuin sen perusviiva. Vaikka se oli kätevä monissa tapauksissa, se aiheutti ongelmia, jos halusit asettaa yhden tarran yläreunan toisen alareunaa vasten. Tällaisessa tilanteessa alempi tarra olisi päällekkäin ylemmän etiketin kanssa, ja ylemmästä tarrasta laskeutuvat voivat törmätä alemmasta tarrasta nouseviin. Nyt automaattinen asettelu tulkitsee UILayoutAttributeBottom tekstiruudun alaosassa (olettaen, että tarra ei ole suurempi kuin sen sisäinen sisältökoko) jaUILayoutAttributeBaseline tekstin perustana. Jos olet jo luonut koodin tarrojen asettelua varten ala- tai keskipisteen mukaan, tekstisi liikkuu hieman ja sinun on säädettävä rajoituksiasi.

    • Luokka tukee nyt pyörityksen aikana luotujen animaatioiden mukauttamista. Myös lisäys- ja poistoanimaatioiden mukauttamismenetelmien nimet ovat muuttuneet, joten samoja koukkuja voidaan käyttää sekä kiertoon että lisäyksiin ja poistoihin.
    • Luokka on muuttanut joidenkin metodien nimiä. Erityisesti koristenäkymiä ei enää viitata "uudelleenkäyttötunnisteella" vaan pikemminkin "elementtilajilla". Koristeellisia näkymiä käyttävien sovellusten on muokattava koodiaan ja rakennettava uudelleen tämän mukaiseksi.
  • Sovellukset, joiden nib- tai kuvakäsikirjoitustiedostoissa on taulukkonäkymät ja jotka on luotu iOS 6:n aiemmilla betaversioilla, vaativat puhtaan koontiversion beta 3:lla ja uudemmilla.

  • Tässä on joitain huomautuksia automaattisen asettelun tuesta UIScrollView:

    • Yleensä automaattinen asettelu pitää näkymän ylä-, vasen-, ala- ja oikeaa reunaa näkyvä reunat. Eli jos kiinnität näkymän sen supernäkymän vasempaan reunaan, kiinnität sen todella supernäkymän rajojen minimiin x-arvoon. Valvonnan rajojen alkuperän muuttaminen tekee emme muuttaa näkymän sijaintia.
    • UIScrollView luokka vierittää sisältöä muuttamalla rajojen alkuperää. Jotta tämä toimisi automaattisen asettelun kanssa, ylä-, vasen-, ala- ja oikean reunan merkityssisällä vieritysnäkymä tarkoittaa nyt sen sisältönäkymän reunoja.
    • Vieritysnäkymän alinäkymien rajoitusten on johdettava täytettävään kokoon, joka tulkitaan sitten vieritysnäkymän sisältökooksi. (Tätä ei pidä sekoittaa intrinsicContentSize automaattiseen asetteluun käytetty menetelmä.) Vieritysnäkymän koon määrittäminen frame automaattisessa asettelussa rajoitusten on oltava joko selkeitä vieritysnäkymän leveyden ja korkeuden suhteen, tai vieritysnäkymän reunojen on oltava sidottu näkymiin ulkopuolella sen alipuusta.
    • Huomaa, että voit saada vieritysnäkymän alinäkymän näyttämään kelluvan (ei vierivän) muun vieritettävän sisällön päällä luomalla rajoituksia näkymän ja vieritysnäkymän alipuun ulkopuolisen näkymän, kuten vieritysnäkymän supernäkymän, välille.
    • Tässä on esimerkkejä vieritysnäkymän määrittämisestä:
      • Sekoitettu lähestymistapa:
        1. Sijoita ja kokoa vieritysnäkymäsi vieritysnäkymän ulkopuolisilla rajoituksilla, toisin sanoen translatesAutoresizingMaskIntoConstraints ominaisuus on asetettu NO.
        2. Luo tavallinen UIView sisältönäkymä vieritysnäkymää varten, jonka koko on haluamasi sisällölläsi. Tee siitä vieritysnäkymän alinäkymä, mutta anna sen jatkaa automaattisen kokoamismaskin muuntamista rajoituksiksi:
          UIView *contentView = [[UIView alloc]
              initWithFrame:CGRectMake(0,0,sisällönleveys,sisällönkorkeus)];
          [scrollView addSubview:contentView];
          // ÄLÄ muuta sisältöäView's translatesAutoresizingMaskIntoConstraints,
          // joka on oletuksena KYLLÄ;
        3. Aseta vieritysnäkymän sisällön koko vastaamaan sisältönäkymän kokoa:
          [scrollView setContentSize:CGMakeSize(contentWidth,contentHeight)];
        4. Luo näkymät, jotka haluat sijoittaa sisältönäkymään, ja määritä niiden rajoitukset sijoittaaksesi ne sisältönäkymään. Vaihtoehtoisesti voit luoda näkymän alipuun siirtyäksesi vieritysnäkymään, määrittää rajoitukset ja kutsua systemLayoutSizeFittingSize: menetelmällä (UILayoutFittingCompressedSize vaihtoehto) löytääksesi koon, jota haluat käyttää sisältönäkymässäsi ja contentSize vieritysnäkymän ominaisuus.
      • Puhdas automaattinen asettelutapa:
        1. Tässä tapauksessa, translatesAutoresizingMaskIntoConstraints on asetettava NO kaikista asiaan liittyvistä näkemyksistä.
        2. Sijoita ja kokoa vieritysnäkymäsi vieritysnäkymän ulkopuolisilla rajoituksilla.
        3. Käytä rajoitteita sijoittaaksesi alinäkymät vieritysnäkymään ja varmista, että rajoitukset liittyvät vieritysnäkymän kaikkiin neljään reunaan eivätkä luota vieritysnäkymään saadakseen kokonsa. Yksinkertainen esimerkki olisi suuri kuvanäkymä, joka sillä on kuvan koosta johdettu sisäinen sisällön koko. Vuonna viewDidLoad näkymäohjaimesi menetelmällä, sisällytät seuraavanlaisen koodin:
          UIScrollView *scrollView = [[UIScrollView alloc] init];
          UIImageView *imageView = [[UIImageView alloc] init];
          [imageView setImage:[UIImage imageNamed:"MyReallyBigImage"]];
          [self.view addSubview:scrollView];
          [scrollView addSubview:imageView];
          scrollView.translatesAutoresizingMaskIntoConstraints = EI;
          imageView.translatesAutoresizingMaskIntoConstraints = EI;
          NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(scrollView, imageView);
          [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" option:0 metrics: 0 viewsDictionary:viewsDictionary]];
          [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|" option:0 metrics: 0 viewsDictionary:viewsDictionary]];
          [scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[imageView]|" option:0 metrics: 0 viewsDictionary:viewsDictionary]];
          [scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[imageView]|" option:0 metrics: 0 viewsDictionary:viewsDictionary]];

          Tämä antaisi sinulle vieritysnäkymän, jonka kokoa muutetaan samalla, kun näkymäohjaimen näkymän kokoa muutetaan (esimerkiksi laitteen pyörittämisen yhteydessä), ja kuvanäkymä olisi vierivä alinäkymä. Sinun ei tarvitse asettaa vieritysnäkymän sisällön kokoa.

  • Kun otetaan huomioon tämä näkymähierarkia:

    ContainerView
        | OddHeightView
        | | EvenHeightView
        | OtherFixedHeightView

    ja nämä rajoitukset:

    EvenHeightView.centerY == OddHeightView.centerY
    EvenHeightView.bottom (tai perusviiva) == OtherFixedHeightView.bottom (tai perusviiva)
    OtherFixedHeightView.top == ContainerView.top +

    iOS 6 beta 4:ssä muissa kuin Retina-näyttölaitteissa näytön alareunat (tai perusviivat) EvenHeightView ja OtherFixedHeightView olivat pois yhden pikselin verran, eikä kehittäjä voinut tehdä asialle mitään. Tämä ongelma on nyt korjattu.

    iOS 6:n beta 4:ssä on tunnettu virhe, että kun sinulla on rajoitus yhdessä vieritysnäkymän kohteen kanssa, toinen kohde on kyseisen vieritysnäkymän jälkeläinen, ja lisäät rajoitteen kyseisen vieritysnäkymän esi-isään. silloin rajoitus saattaa lakata toimimasta kunnolla. Kiertotapa on lisätä tällaisia ​​rajoituksia vain itse vieritysnäkymään, ei mihinkään vanhaan esi-isään.

    • Ennen muutoksia asettelumoottori ei integroinut näkymien sijaintimuuttujia, ja nämä rajoitukset olivat aina täytettäviä:
      ContainerView
          | OddWidthView
          | EvenWidthView
      OddWidthView.centerX == ContainerView.centerX
      EvenWidthView.centerX == ContainerView.centerX
      EvenWidthView.centerX == OddWidthView.centerX

      Nyt asettelumoottori integroi sijaintimuuttujat (x ja y) sekä mittamuuttujat (leveys ja korkeus). Tämä tarkoittaa, että se yrittää täyttää kolme rajoitusta an kokonaisluku ratkaisu, joka ei ehkä ole mahdollista, ja näin ollen kirjaa, että nämä rajoitukset eivät ole täyttyneet. Tässä tapauksessa ja kaikissa vastaavissa tapauksissa kehittäjien on vain poistettava ylimääräinen rajoitus (tai rajoitukset). Yllä olevassa esimerkissä minkä tahansa kolmesta rajoituksesta poistaminen ratkaisee ongelman.

Safari ja WebKit

  • WebKit iOS:ssä tukee nyt requestAnimationFrame ja cancelAnimationFrame menetelmät JavaScriptissä, kuten tässä on kuvattu: http://www.w3.org/TR/animation-timing/Sovelluksen oletusvälimuistin kiintiö on kasvanut 5 megatavusta 25 megatavuun.

    • Huomaa, että koska spesifikaatio on edelleen Working Draft -tilassa, näillä menetelmillä on webkit etuliite, joten heillä on window.webkitRequestAnimationFrame jawindow.webkitCancelAnimationFrame.
  • JPEG-alinäytteenottokynnys on noussut 2 MP:stä (megapikselistä) 5 MP:iin kaikissa tuetuissa laitteissa paitsi iPhone 3GS:ssä ja iPod touchissa (4. sukupolvi).

  • Tuki on lisätty kohteelle <input type="file"> tunnisteet verkkolomakkeissa. Käyttäjät voivat ladata olemassa olevia valokuvia ja videoita valokuvakirjastostaan ​​tai ottaa kuvan tai videon kameralla. Aikaisemmin tämä lomakehallinta oli aina poissa käytöstä.

  • OS X:n Safari 6.0:n avulla kehittäjät voivat nyt käyttää Web Inspectoria (verkkokehitystyökalua) liitettyjen iOS-laitteiden ja iOS-simulaattorin kanssa. Kehittäjät voivat käyttää Web Inspectoria Safarin ja UIWebView luokkaa omissa sovelluksissaan, jotka on rakennettu ja ajettu Xcodesta. Tämä korvaa Debug Console -bannerin Safarissa.

  • iOS 6:ssa ja uudemmissa versioissa verkkotiedot (SQL Web Storage ja LocalStorage) alkaen a UIWebView objekti voidaan tallentaa hakemistoon, josta tehdään varmuuskopio. Ota näiden tietojen varmuuskopiointi käyttöön määrittämälläWebKitStoreWebDataForBackup avain YES sovelluksesi käyttäjän oletusasetuksissa. Tämä tulee tehdä vain, jos sovelluksesi perustuu verkkosisältötietoihin, joita ei voi ladata uudelleen. Jos sinunUIWebView objekti avaa linkkejä mielivaltaiseen verkkosisältöön, tämän avaimen pitäisi olla NO. Tämän avaimen arvon vaihtaminen ei säilytä olemassa olevia verkkonäkymätietoja.

  • iOS 6:ssa ja uudemmissa versioissa Safari ei enää rekisteröidy yleiseen käyttöön feed: RSS/ATOM-järjestelmät. Sovelluksia, jotka voivat tarkastella tämäntyyppisiä syötteitä, kehotetaan rekisteröitymään kyseiseen URL-järjestelmään.

  • WebKit ei enää aina luo laitteistokiihdytettyjä tasoja elementeille, joissa on -webkit-transform: preserve-3d valinnainen. Kirjoittajien tulisi lopettaa tämän vaihtoehdon käyttö laitteistokiihdytyksen saamiseksi.

  • Kokeellinen CSS3 Flexbox -tuki poistetaan käytöstä. Vaihda käytöstä -webkit-flexbox ja -webkit-inline-flexbox että -webkit-box ja -webkit-inline-box.

  • iOS 6:sta lähtien upotetut YouTube-URL-osoitteet muodossa http://www.youtube.com/watch?v=oHg5SJYRHA0 ei toimi enää. Nämä URL-osoitteet ovat videon katselua varten YouTube-sivustolla, eivät verkkosivuille upottamista varten. Sen sijaan käytettävä muoto on kuvattu tässä: https://developers.google.com/youtube/player_parameters.

  • iOS 6:ssa keyboardDisplayRequiresUserAction omaisuus lisättiin UIWebView luokkaa. Omaisuuden oletusarvo on YES, mikä tarkoittaa soittamista focus() lomakeelementissä ei tuo näppäimistöä esiin. Vaihtamalla omaisuutta muotoon NO, JavaScript-kutsu osoitteeseen focus() lomakeelementissä tarkentaa elementin ja tuo näppäimistön automaattisesti esiin.

  • IOS 6:sta lähtien soittaminen focus() lomakeelementissä verkkosovelluksessa tarkentaa elementin.