Apple frigiver iOS 6 beta 4

  For et par minutter siden lancerede Apple iOS beta 6 4 pentru dezvoltatorii de aplicatii pentru iOS. Noul iOS 6 beta 4 are build-ul 10A5376, insa pentru unii apare ca fiind versiunea beta 3, iar pentru altii apare eroarea de mai jos cand incearca sa dea restore. Deocamdata se pare ca exista unele probleme cu sistemul celor de la Apple, insa era de asteptat avand in vedere ca vorbim despre o versiune beta. Noua versiune beta a iOS 6 este disponibila si in portalul dedicat dezvoltatorilor pe website-ul Apple, deci daca nu puteti sa o descarcati din terminal o puteti descarca de acolo.

Regnskabsramme

  • When requesting access to Facebook accounts, the only key required in your options dictionary is ACFacebookAppIdKeyACFacebookPermissionGroupKey ,ACFacebookAppVersionKey er nu forældede.If you request a write permission under ACFacebookPermissionsKey, Såsom publish_stream, you must provide a value for ACFacebookAudienceKey, which can be one ofACFacebookAudienceEveryoneACFacebookAudienceFriends eller  ACFacebookAudienceOnlyMe.

Adressebog

  • FAST: Når en app er i en frisk privatlivstilstand og forsøger at præsentere en ABNewPersonViewController, the user cannot dismiss that view controller properly, even if the user allows access to contacts. The user must force quit the app and relaunch.

  • Anmodning om adgang til kontakter:

    • Users are able to grant or deny access to contact data on a per-app basis. To request access to contact data, call the ABAddressBookRequestAccessWithCompletionfunction after calling the ABAddressBookCreateWithOptions fungere. Det ABAddressBookRequestAccessWithCompletion function does not block the app while the user is being asked to grant or deny access. Until access has been granted, the ABAddressBookRef object will not contain any contacts, and any attempt to modify contacts fails with a kABOperationNotPermittedByUserError error. The user is prompted only the first time access is requested; any subsequent calls toABAddressBookCreateWithOptions will use the existing permissions. The completion handler is called on an arbitrary queue. If the ABAddressBookRef object is used throughout the app, then all usage must be dispatched to the same queue to use ABAddressBookRef in a thread-safe manner.
  • Kontrol af adgangsgodkendelsesstatus:

    • An app can use the authorization status API to check if it can access contacts, calendars, reminders, or the photo library. This API is independent from the request access API and will not prompt the user to grant or deny access. With this API an app can adjust the display of its UI elements that would access the data class. For example, if access to contacts is authorized or not determined, then a UI button to pick a contact can be displayed.
    • For Address Book, call the ABAddressBookGetAuthorizationStatus function. For Event Kit, call the authorizationStatusForEntityType: class method ofEKEventStore. For Assets Library, call the authorizationStatus class method of ALAssetsLibrary. Betydningen af ​​de statusværdier, der returneres, er som følger:
      • Autorisationsstatus ikke fastlagt—The user has not yet made a choice regarding whether this app can access the data class.
      • Autorisationsstatus begrænset—This app is not authorized to access the data class. The user cannot change this app’s status, possibly due to active restrictions such as parental controls being in place.
      • Autorisationsstatus nægtet—The user explicitly denied access to the data class for this app.
      • Autorisation Status Autoriseret—This app is authorized to access the data class.

Apple TV

  • FAST: 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.

  • FAST: Apple TV genstarter muligvis, mens du bruger Remote-appen.

  • FAST: Apple TV genstarter muligvis, når systemsproget ændres.

  • FAST: Fotostream indlæses ikke, når du logger ind igen. Genstart Apple TV for at løse problemet.

  • Musik afspilles ikke under billeddiasshows.

  • Screen saver may revert to using the default images after installing update. 

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'er nævnt nedenfor.

  • Indstilling af parameteren interfaceIndex til kDNSServiceInterfaceIndexAny in the following APIs will not include P2P interfaces by default. To include P2P interfaces, you must now set the kDNSServiceFlagsIncludeP2P flag ved brug kDNSServiceInterfaceIndexAny eller indstil interfaceIndex til kDNSServiceInterfaceIndexP2P. De berørte API'er har:

    • DNSServiceBrowse
    • DNSServiceRegister
    • DNSServiceResolve
    • DNSServiceRegisterRecord
    • DNSServiceQueryRecord

ordbog

  • FAST: There is a known issue with dictionaries when attempting to define a word in any language other than English or Japanese. When the reference library is presented, the user is given the option to download a dictionary—that download may not begin. The user can tap outside the popover on an iPad or tap the Done button on the iPhone or iPod touch to dismiss the download request.

Event Kit

  • Anmodning om adgang til kalendere eller påmindelser:

    • Users are able to grant or deny access to event and reminder data on a per-app basis. To request access to event and/or reminder data, call therequestAccessToEntityType:completion:: method of EKEventStore. This will not block the app while the user is being asked to grant or deny access. Until access has been granted for an entity type, the event store will not contain any calendars for that entity type and any attempt to save data will fail.
    • The user will be prompted only the first time access is requested; any subsequent instantiations of EKEventStore will use the existing permissions. The completion handler is called on an arbitrary queue.

Game Center

  • FAST: When creating a new Game Center account in-app on the iPad, the popover for selecting the month of your date of birth shows up with no content to select.

  •  authenticate metode til GKLocalPlayer has been removed. Authentication will commence automatically when the completion handler is set.

  • As of iOS 6 beta 4, GKGameCenterViewController singleton is no longer supported.

  • As of iOS 6 beta 4, GKScore+Sharing.h file and associate category are removed.

iCloud

  • When creating an iCloud account, you can use any email-based Apple ID or your existing iCloud account. If you had a MobileMe account that you did not move to iCloud, you can use that Apple ID to sign up for a new iCloud account (none of your previous MobileMe data will be present).Provisioning profiles must be enabled for iCloud in the iOS Provisioning Portal. To enable a provisioning profile for iCloud, navigate to the App ID section of the iOS Provisioning Portal and configure your App ID for iCloud. After enabling the App ID for iCloud, regenerate your provisioning profiles to enable them for iCloud.

    • icloud.com email addresses are now available for iCloud mail users. Users signing up for new Apple IDs, or enabling Mail on their iCloud account for the first time, will automatically receive an @icloud.com email address instead of a me.com email address. iCloud users with @me.com addresses that have been used with iOS 6 beta 3 or later will receive an @icloud.com email address that matches their @me.com adresse.
    • icloud.com email cannot be sent from www.icloud.com. Brugere bør bruge http://beta.icloud.com at this time if they wish to use a web browser to send email from theiricloud.com adresse.
    • @icloud.com addresses will be added within two weeks of first using iOS 6.
  •  setSortDescriptors: metode til NSMetadataQuery understøttes ikke.

  • I iOS 6 kan filer, der er beskyttet via databeskyttelse, ikke bruges med iCloud Storage API'er.

  • Filenames are case-insensitive in OS X but case-sensitive in iOS. This can lead to problems when using iCloud to share files between the two platforms. On iOS, you should take steps to avoid creating files with names that differ only by case.

  • The behavior of coordinated read operations on iCloud Documents has changed:On previous iOS releases, when your app performed a coordinated read operation on a file or package and the iCloud daemon noticed that there was a newer version of the item available, the coordinated read operation blocked until the newer version of the item was downloaded and written to the disk.

    As of iOS 6 beta 3, when you start a coordinated read operation on a file or package for which you already have a local version, the coordinated read will be granted as soon as possible, and the new version, if any, will download in the background. This call will block for downloading reasons only if you do not have any version of the file available locally.

    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 UIDocument tilbagekald for at blive underrettet, når konflikttaberne er downloadet og tilgængelige.

iTunes

  • iTunes 10.6.3 er påkrævet til iOS SDK 6.0.

  • Previous public betas of iOS can no longer download iTunes Match songs.

Lokation

Maps

  • In iOS 6 and later, Map Kit is built on a new infrastructure hosted by Apple. Earlier iOS releases will continue to use Google’s service.Routing apps that do not specify a coverage file during development will always be displayed in the Maps routing search results.

    • API-kompatibilitet vil blive opretholdt (se kendte problemer nedenfor).
    • Maps are now supported in Simulator.
    • Map data will continue to evolve—only a limited amount of high-resolution satellite imagery is currently available.
  • Testing and debugging of coverage files for routing apps is only supported during development through the Xcode Run workflow. (You can specify the coverage file for a given Run scheme using the Options pane of the Run section of the scheme editor.) Apps that are archived and distributed (outside of the App Store) onto devices will not have access to the app’s coverage files.

  • FAST: Maps does not zoom into the current location when launched from a third-party app.

Aviskiosk

  • FAST: Only simple HTTP downloads will work with Newsstand.

Passbook

  • The Description field is now a required field for a Pass. All passes created without it will fail to validate and will not ingest.

  • Passbook in Simulator no longer requires https/ssl når du bruger en webServiceURL when ingesting a pass.

  • FAST: Kan ikke vise boardingkort på låseskærmen.

  • Passes will no longer fall back to background.png if strip.png is not included in your pass bundle.

  • Indholdet af userInfo ordbog til PKPassLibraryDidChangeNotification have changed in the case of removed passes. Please consult the latest documentation for the new userInfo ordbog.

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.

  • In iOS 6, there are improved privacy controls for Calendar, Reminders, Contacts, and Photos.

    • 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.
    • Developers can set a “purpose” string for each class of isolated data. iOS displays this string to users to help them understand why their data is being requested. These strings can be added using Xcode’s Project editor, which is in the Info tab. The relevant key names begin with the string “Privacy -”.
    • Der er ændringer til Event Kit og Address Book rammerne for at hjælpe udviklere med denne funktion.

Simulator

  • FAST: Bekræftelsespanelet for appsletning tager et stykke tid at dukke op i iOS Simulator.

  • No privacy alerts are displayed in iOS Simulator for apps that access Photos, Contacts, Calendar, and Reminders.

  • Downloading In-App Purchase hosted content in iOS Simulator is not supported.

  • When attempting to play an MP3 sound in Simulator, you will hear a popping sound instead.

Delt fotostream

  • Users must go to Settings > iCloud to ensure that they receive Shared Photo Stream Notifications.

  • In order to share a Photo Stream with iOS 6 beta, you must invite someone using his iCloud email address; otherwise, he will not receive the invitation.

  • Upgrading from iOS 6 beta 1 to beta 2 will cause your device to redownload all of your Shared Photo Streams.

  • Funktionen Shared Photo Stream er indstillet til FRA ved opdatering fra iOS 6 beta 1 til en senere udgivelse. Standardindstillingen skal være TIL.

  • FAST: Turning off Shared Photo Streams may leave Camera in an unresponsive state; force quitting the Camera app will resolve this issue.

Social

  • Weibo vises kun i appen Indstillinger, hvis et kinesisk tastatur er aktiveret.

  •  requestAccessToAccountsWithType:withCompletionHandler: metode til ACAccountStore er nu forældet. For at få adgang til brugerkonti, brug venligstrequestAccessToAccountsWithType:options:completion: fremgangsmåde.In the options parameter of this new method, pass nil 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):

    When requesting access to Facebook accounts, the only key required in your options dictionary is ACFacebookAppIdKeyACFacebookPermissionGroupKey ,ACFacebookAppVersionKey er nu forældede.If you request a write permission under ACFacebookPermissionsKey-såsom publish_stream—you must provide a value for ACFacebookAudienceKey, which can be one ofACFacebookAudienceEveryoneACFacebookAudienceFriends eller  ACFacebookAudienceOnlyMe.

    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.

Statuslinje

  • It is now possible to set status bar tint parameters in your app’s Info.plist file. You might do this to ensure that the status bar color matches your app’s navigation bar color during startup. To set the status bar tint, add the UIStatusBarTintParameters key to your Info.plist file. The value of this key is a dictionary with the appropriate values describing the navigation bar your app has at startup. Inside the dictionary should be the UINavigationBar key, which has a value that is also a dictionary. That dictionary contains the initial navigation bar’s style (with the Style key) and whether it is translucent (with the Translucent key). If your navigation bar uses them, you can also specify its tint color (with the TintColor key) or the name of its custom background image (with the BackgroundImage nøgle).

UIKit

  • I iOS 5.1 er UISplitViewController class adopts the sliding presentation style when presenting the left view (previously seen only in Mail). This style is used when presentation is initiated either by the existing bar button item provided by the delegate methods or by a swipe gesture within the right view. No additional API adoption is required to obtain this behavior, and all existing APIs—including that of the UIPopoverController instance provided by the delegate—will continue to work as before. If the gesture would be insupportable in your app, setting the presentsWithGesture egenskaben for din split view-controller til NO deaktiverer bevægelsen. Det frarådes dog at deaktivere gestus, fordi brugen af ​​den bevarer en ensartet brugeroplevelse på tværs af alle apps.

  • FAST: In iOS 6, changes have been introduced so that you no longer need to set a delegate and implement a method for Single-Finger and Single-Tap gesture recognizers. This makes them work well with the UIControl objekter.

  • I iOS 6 og nyere er UIWebView klasse maler indholdet asynkront.

  • Autorotation ændrer sig i iOS 6. I iOS 6 er shouldAutorotateToInterfaceOrientation: metode til UIViewController er forældet. I stedet skal du brugesupportedInterfaceOrientationsForWindow: , shouldAutorotate metoder.

    • Mere ansvar flyttes til appen og app-delegeret. Nu er iOS-beholdere (som f.eks UINavigationController) 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 ogUIInterfaceOrientationMaskAllButUpsideDown for iPhone-formsproget.
    • A view controller’s supported interface orientations can change over time—even an app’s supported interface orientations can change over time. The system asks the top-most full-screen view controller (typically the root view controller) for its supported interface orientations whenever the device rotates or whenever a view controller is presented with the full-screen modal presentation style. Moreover, the supported orientations are retrieved only if this view controller returns YES fra sin shouldAutorotate metode. Systemet skærer visningscontrollerens understøttede orienteringer med appens understøttede orienteringer (som bestemt af Info.plist fil eller delegerets appapplication:supportedInterfaceOrientationsForWindow: metode) for at bestemme, om der skal roteres.
    • The system determines whether an orientation is supported by intersecting the value returned by the app’s supportedInterfaceOrientationsForWindow: metode med værdien returneret af supportedInterfaceOrientations method of the top-most full-screen controller.
    •  setStatusBarOrientation:animated: method is not deprecated outright. However, it now works only if the supportedInterfaceOrientations method of the top-most full-screen view controller returns 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 implementerer shouldAutorotateToInterfaceOrientation: metode får ikke den nye autorotationsadfærd. (Med andre ord falder de ikke tilbage til at bruge appen, app-delegeret eller Info.plist fil for at bestemme de understøttede retninger.) I stedet skalshouldAutorotateToInterfaceOrientation: method is used to synthesize the information that would be returned by the supportedInterfaceOrientations fremgangsmåde.
  •  willRotateToInterfaceOrientation:duration:willAnimateRotationToInterfaceOrientation:duration:og didRotateFromInterfaceOrientation: methods are no longer called on any view controller that makes a full-screen presentation over itself—for example, by calling presentViewController:animated:completion:.I iOS 6 er viewWillUnload , viewDidUnload fremgangsmåder til UIViewController er nu forældet. Hvis du brugte disse metoder til at frigive data, skal du brugedidReceiveMemoryWarning metode 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 visningscontrollerensviewWillLayoutSubviews metode og juster layoutet ved hjælp af visningens grænser rektangel.
  • It is unsupported to set values for the shadowOffset or shadowColor egenskaber ved en UILabel object if its attributedText property contains a valid attributed string. Instead, use the NSShadowAttributeName attribute of the attributed string to set the shadow.

  • På grund af kompatibilitetsproblemer NSBaselineOffsetAttributeName 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 textAlignment ejendom af UILabel eller leveres som justeringsparameter til drawInRect:withFont:lineBreakMode:alignment: metode til NSString.

  •  setContentStretch: metode til UIView er blevet forældet i denne betaversion. For at opnå den samme effekt skal du bruge resizableImageWithCapInsets: metode til UIImageand display the image with a UIImageView.

  •  resizableImageWithCapInsets: metode til UIImage effectively resizes images by tiling. As a performance optimization, it uses stretching rather than tiling when the user would not be able to tell the difference, such as when a single column or row is being stretched. But in certain circumstances, the user might want to actually stretch some region of an image. In iOS 6, the resizableImageWithCapInsets:resizingMode: metoden gør det muligt for den, der ringer, at angive en tiling- eller stretching-ændringstilstand.

  •  UICollectionViewLayout class has changed:The bottom edge of a UILabel view is now different from its baseline.Previously, auto layout was interpreting the bottom of a UILabel to be the same as its baseline. While convenient in many cases, it caused problems if you wanted to place the top edge of one label against the bottom edge of another. In such a scenario, the bottom label would overlap the top one, and descenders from the top label could crash into ascenders from the bottom label. Now, auto layout interprets UILayoutAttributeBottom as the bottom of the text box (presuming the label is not bigger than its intrinsic content size) andUILayoutAttributeBaseline as the baseline of the text. If you have already created code for laying out labels according to the bottom or center point, your text will move around a little and you will need to adjust your constraints.

    • The class now supports the customization of the animations created during rotation. The names of methods for customizing insert and delete animations have also changed, so the same hooks can be used for rotations as well as for insertions and deletions.
    • 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.
  • 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 til UIScrollView:

    • In general, auto layout considers the top, left, bottom, and right edges of a view to be the synlig edges. That is, if you pin a view to the left edge of its superview, you’re really pinning it to the minimum x-value of the superview’s bounds. Changing the bounds origin of the superview does ikke change the position of the view.
    •  UIScrollView class scrolls its content by changing the origin of its bounds. To make this work with auto layout, the meaning of the top, left, bottom, and right edgesinden for a scroll view now mean the edges of its content view.
    • 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 med intrinsicContentSize method used for auto layout.) To size the scroll view’s frame with auto layout, constraints must either be explicit regarding the width and height of the scroll view, or the edges of the scroll view must be tied to views uden for of its subtree.
    • 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 sige translatesAutoresizingMaskIntoConstraints egenskab er indstillet til NO.
        2. Lav en almindelig UIView indholdsvisning 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];
          // DON'T change contentView's translatesAutoresizingMaskIntoConstraints,
          // som standard er YES;
        3. Indstil indholdsstørrelsen for rullevisningen, så den matcher størrelsen på indholdsvisningen:
          [scrollView setContentSize:CGMakeSize(contentWidth,contentHeight)];
        4. 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 kalde systemLayoutSizeFittingSize: metode (medUILayoutFittingCompressedSize option) to find the size you want to use for your content view and the contentSize egenskaben for rullevisningen.
      • Ren auto layout tilgang:
        1. I dette tilfælde, translatesAutoresizingMaskIntoConstraints skal indstilles til NO on all views involved.
        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 den viewDidLoad metode for din visningscontroller, vil du inkludere kode som følgende:
          UIScrollView *scrollView = [[UIScrollView alloc] init];
          UIImageView *imageView = [[UIImageView alloc] init];
          [imageView setImage:[UIImage imageNamed:"MyReallyBigImage"]];
          [self.view addSubview:scrollView];
          [scrollView addSubview:imageView];
          scrollView.translatesAutoresizingMaskIntoConstraints = NO;
          imageView.translatesAutoresizingMaskIntoConstraints = NO;
          NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(scrollView,imageView);
          [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" options:0 metrics: 0 viewsDictionary:viewsDictionary]];
          [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|" options:0 metrics: 0 viewsDictionary:viewsDictionary]];
          [scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[imageView]|" options:0 metrics: 0 viewsDictionary:viewsDictionary]];
          [scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[imageView]|" options:0 metrics: 0 viewsDictionary:viewsDictionary]];

          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.

  • Given this view hierarchy:

    ContainerView
        |     OddHeightView
        |        |    EvenHeightView
        |    OtherFixedHeightView

    and these constraints:

    EvenHeightView.centerY == OddHeightView.centerY
    EvenHeightView.bottom (or baseline) ==  OtherFixedHeightView.bottom (or baseline)
    OtherFixedHeightView.top == ContainerView.top + <space>

    in iOS 6 beta 4, on non-Retina display devices, the bottoms (or baselines) of the EvenHeightView og OtherFixedHeightView were off by one pixel and the developer could do nothing about it. This issue is now fixed.

    In iOS 6 beta 4, there is a known bug that when you have a constraint with one item that is a scroll view, the other item is a descendant of that scroll view, and you add the constraint to an ancestor of that scroll view, then the constraint might stop working properly. The workaround is to add such constraints only to the scroll view itself, not to any old ancestor.

    • Before the changes, the layout engine did not integralize the position variables for the views, and these constraints were always satisfiable:
      ContainerView
          |    OddWidthView
          |    EvenWidthView
      OddWidthView.centerX == ContainerView.centerX
      EvenWidthView.centerX == ContainerView.centerX
      EvenWidthView.centerX == OddWidthView.centerX

      Now, the layout engine is integralizing the position variables (x and y) as well as dimension variables (width and height). This means that it will try to satisfy the three constraints with an heltal solution, which might not be possible, and thus will log that these constraints are unsatisfiable. In this case, and in all analogous cases, developers just need to remove the redundant constraint (or constraints). In the example above, removing any one of the three constraints will resolve the issue.

Safari og WebKit

  • WebKit på iOS understøtter nu requestAnimationFrame , cancelAnimationFrame methods in JavaScript, as described here: http://www.w3.org/TR/animation-timing/.The default app cache quota has increased from 5 MB to 25 MB.

    • Bemærk, at fordi specifikationen stadig er i Working Draft-tilstanden, har disse metoder webkit præfiks, så de har window.webkitRequestAnimationFrame ,window.webkitCancelAnimationFrame.
  • The JPEG subsampling threshold has increased from 2 MP (megapixels) to 5 MP on all supported hardware except iPhone 3GS and iPod touch (4th generation).

  • Der er tilføjet support til <input type="file"> tags in web forms. Users can upload existing photos and videos from their photo library or take a picture or video using the camera. Previously, this form control was always disabled.

  • 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 en UIWebView objekt kan gemmes i en mappe, der vil blive sikkerhedskopieret. For at aktivere sikkerhedskopiering af disse data skal du indstilleWebKitStoreWebDataForBackup nøglen til YES i din apps brugerstandarder. Dette bør kun gøres, hvis din app er afhængig af webindholdsdata, der ikke kan genindlæses. Hvis dinUIWebView 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 registreres Safari ikke længere for det almindelige feed: RSS/ATOM-skemaer. Apps, der kan se disse typer feeds, opfordres til at registrere sig for det URL-skema.

  • WebKit no longer always creates hardware-accelerated layers for elements with the -webkit-transform: preserve-3d valgfri. Forfattere bør stoppe med at bruge denne mulighed som en måde at få hardwareacceleration på.

  • Experimental CSS3 Flexbox support will be disabled. Please switch from using -webkit-flexbox , -webkit-inline-flexbox til -webkit-box , -webkit-inline-box.

  • Fra iOS 6, indlejrede YouTube-URL'er i form af http://www.youtube.com/watch?v=oHg5SJYRHA0 vil 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 her: https://developers.google.com/youtube/player_parameters.

  • I iOS 6 er keyboardDisplayRequiresUserAction property was added to the UIWebView class. The property defaults to YES, which means that calling focus() on a form element will not bring up the keyboard. By changing the property to NO, a JavaScript call to focus() on a form element will focus the element and bring up the keyboard automatically.

  • As of iOS 6, calling focus() on a form element in a web app will focus the element.