iOS SDK Release Notes for iOS 8.0 Beta 5

Contents:

Introduction

iOS SDK 8.0 provides support for developing iOS apps. It is packaged with a complete set of Xcode tools, compilers, and frameworks for creating apps for iOS and OS X. These tools include the Xcode IDE and the Instruments analysis tool, among many others.

With this software you can develop apps for iPhone, iPad, or iPod touch running iOS 8. You can also test your apps using the included iOS Simulator, which supports iOS 8. iOS SDK 8.0 requires a Mac computer running OS X v10.9.3 (Mavericks) or later.

This version of iOS is intended for installation only on devices registered with the Apple Developer Program. Attempting to install this version of iOS in an unauthorized manner could put your device in an unusable state.

For more information and additional support resources, visit http://developer.apple.com/programs/ios/.

Bug Reporting

For issues not mentioned in the Notes and Known Issues section, please file bugs through the Apple Developer website (https://developer.apple.com/bug-reporting/ios/). Additionally, you may discuss these issues and iOS SDK 8.0 in the Apple Developer Forums: http://devforums.apple.com. To get more information about iCloud for Developers, go to http://developer.apple.com/icloud.

Notes and Known Issues

The following issues relate to using iOS SDK 8.0 to develop code.

AVCapture

Fixed in beta 5

Known Issue

Use of the new constant, AVCaptureISOCurrent, will result in inconsistent ISO values (as observed on the ISO property) if setExposureModeCustomWithDuration:ISO:completionHandler: is called repeatedly.

    Backup and Restore

    Fixed in beta 5

    A restoration of an iCloud backup onto the same device the backup was taken from may not work properly. As a result, some apps may crash.

    Known Issues

    • Encrypted backups to iTunes fail.

    • iOS 7 iCloud backups restored to an iOS 8 beta device may not properly restore photos.

    CarPlay

    Fixed in beta 5

    The Now Playing screen is missing the Back button in the top-left corner.

    CloudKit

    Fixed in beta 5

    Clients sending multiple simultaneous record update requests to the same zone in the private database may encounter CKErrorZoneBusy errors.

    Workaround: Clients should send update requests for a given zone one at a time. In addition, they should handle CKErrorZoneBusy errors by retrying with an exponential backoff.

    Contacts

    Note

    The Address Book UI people picker has been changed for iOS 8. A new mode with new API has been added where the app does not need access to the user’s contacts and the user will not be prompted for access. A temporary copy of the selected person is returned to the app. See ABPeoplePickerNavigationController.h for more details.

    As of iOS 8 beta 2, you must use the new mode. The old mode has been deprecated.

    See the new PeoplePicker: Picking a Person or Property sample project demonstrating usage of the new mode.

    Document Providers

    Notes

    • Your app needs the iCloud entitlement to be able to be used as a document provider.

    • The com.apple.developer.icloud-container-identifiers entitlement will be required when iOS 8 is released.

    Fixed in beta 5

    • App icons in the document picker do not show up on iPhone and iPad.

    • Document providers may hang when importing files.

    Known Issues

    • After rotating document picker to landscape, the status bar is hidden.

    • Upon bringing up document picker in landscape, the containing view may be shifted beneath the navigation bar.

    • On iPhone, bringing up DocMenu from Locations in DocPicker, overlaps with status bar.

    Extensions

    Known Issues

    • Extensions need an arm64 slice to run on 64-bit devices. If you try to run the armv7 slice on a 64-bit device it won’t work.

    • Apps need to have an arm64 slice if the bundle contains a framework that both the app and the app extension link against.

    Fixed in beta 5

    • Keyboard extensions can now be profiled with Instruments.

    • Extensions now more reliably support control of location access.

    • After redeploying an app, the Today view extension may not be launched, and sometimes its bundle display name becomes the name of the app.

    FaceTime

    Fixed in beta 5

    FaceTime does not work properly in landscape orientation.

    Family Sharing

    Known Issues

    • Shared purchase history pages on Mac App Store and iOS App Store are disabled.

    • Items already owned by family members must be re-downloaded from the Purchased page (not Store pages) to get them free of additional charge.

    File System

    Note

    The file system layout of app containers has changed on disk. Rather than relying on hard-coded directory structure, use the NSSearchPathForDirectoriesInDomains function or the URLForDirectory:inDomain:appropriateForURL:create:error: method of the NSFileManager class. See Accessing Files and Directories in File System Programming Guide.

    Find My Friends

    Note

    Now that the Share My Location feature is integrated into Messages, Find My Friends only supports the Apple ID configured in Settings > iCloud.

    Fonts

    Note

    The Thai system font has increased in size to improve readability. This will cause clipping in many places in your UI if you don’t take appropriate action:

    1. Use UILabel as much as possible. If you use Interface Builder, make sure that Clip Subviews is not checked. UIKit will grow the clipping region as necessary to not clip text.

    2. Use Dynamic Type. This will ensure that you do not have overlapping glyphs in multiline labels or text fields.

    If you can’t do 1 and 2 because you implement your own views, you must implement measures not to clip. You can use CoreText to figure out the appropriate clipping region for a line of text by calling:

    • CTLineGetBoundsWithOptions(lineRef, kCTLineBoundsIncludeLanguageExtents);

    To avoid overlapping glyphs in multiline text elements, adjust the line height. An additional 30% is recommended.

    This measure will also help your app perform better in other languages, including Arabic, Hindi, and Vietnamese.

    Handoff

    Note

    Handoff is incompatible between devices using this beta and the prior beta. You should test Handoff with the most recent beta software because it is not backward-compatible with previous betas.

    HealthKit

    Notes

    • Spirometry data types are now available in HealthKit.

    • Any blood type that was set in Medical ID prior to beta 3 will be cleared.

    • The pairing UI for BTLE health devices has been removed from HealthKit and is now available in Settings > Bluetooth.

    • The HKWorkout API is now available to store workouts.

    • HKQuantityTypeIdentifierGalvanicSkinResponse has been renamed HKQuantityTypeIdentifierElectrodermalActivity.

    • The following HKObjectType identifiers have been removed:

      • HKQuantityTypeIdentifierRRInterval

      • HKQuantityTypeIdentifierHeatFlux

      • HKCorrelationTypeIdentifierHeartRateReading

    HomeKit

    Note

    • After upgrading to beta 5, you need to reset your home configuration in Settings > Privacy > HomeKit > Reset Home Configuration.

    • You must sign into iCloud and enable Keychain sync to use HomeKit with this seed.

    Known Issue

    Siri may not immediately recognize HomeKit data changes.

    Workaround: To trigger an update to Siri, edit other data used by Siri such as a contact or the name of a Reminders list.

    iAd

    Fixed in beta 5

    iAd videos may not play in NPR HLS station.

    iCloud Drive

    Notes

    • iCloud Documents & Data created with iOS 8 Beta will be deleted from the servers at some point during this beta period. Information downloaded and not evicted from the device will remain on device and will re-sync after the data wipe occurs.

    • Document storage containers created using the UIDocument class in iOS 7 are not yet available for use with iCloud Documents through Xcode 6 beta or in the Certificates, Identifiers & Profiles section of Member Center. These containers will be migrated later and associated with your existing App IDs.

    • URLForUbiquityContainerIdentifier: might return nil when running your application in Xcode. If so, open System Preferences, navigate to iCloud > iCloud Drive, and enable Xcode.

    • Migrating to iCloud Drive will disable Documents & Data syncing for your iCloud account on iOS 7 and earlier devices, as well as OS X Mavericks and earlier Macs.

    iCloud Keychain

    Fixed in beta 5

    • Initial sync does not work if the approving device is locked when the approval occurs.

    • Using the recovery option can leave you in a state where new items added to the keychain do not sync.

    Known Issue

    Upon logging into a device with the iCloud 8 beta, other devices in your keychain circle may have their access to the circle revoked.

    Workaround: Enable iCloud Keychain Sync on your other devices again.

    iTunes Sync

    Known Issue

    Apps do not sync from a device to iTunes.

    Keyboards

    Fixed in beta 5

    • If you turn off predictive text in one app and then turn it back on in another, it may not actually be reactivated.

    • Caps Lock may be unexpectedly enabled in text input fields.

    Localization

    Fixed in beta 5

    The following have English strings that are now properly localized in other languages:

    • VoiceOverTouch

    • Sharing

    • ManagedConfiguration

    • AirPortAssistant

    • MapKit

    • SpringboardUIServices

    • AccessibilityBundles

    • Music

    Maps

    Known Issue

    When viewed in the Simulator, the "Hybrid" view in Maps and MapKit apps does not show all of the tiles.

    Metal and OpenGL

    Fixed in beta 5

    Shadow samplers are broken when using linear filtering.

    Workaround: For OpenGL, set GL_TEXTURE_MIN_FILTER and GL_TEXTURE_MAG_FILTER to GL_NEAREST. For Metal, set the mag_filter and min_filter sampler properties to nearest in the shader source.

    Music

    Fixed in beta 5

    The Music app may stop responding when downloading an album.

    Notification Center

    Note

    The schedule and intended use of widgetPerformUpdateWithCompletionHandler: is intended as a convenient home for all data/model update logic. If implemented, the system will call at opportune times for the widget to update its state, both when Notification Center is visible, as well as in the background. An implementation is required to enable background updates. It’s expected that the widget will perform the work to update asynchronously and off the main thread as much as possible. Widgets should call the argument block when the work is complete, passing the appropriate NCUpdateResult. Widgets should NOT block returning from viewWillAppear: on the results of this operation. Instead, widgets should load cached state in viewWillAppear: in order to match the state of the view from the last viewWillDisappear:, then transition smoothly to the new data when it arrives.

    NSURLSession

    Note

    Beginning in iOS 8 beta 2, the NSURLSessionTask class provides a new “priority” property with three associated constants: NSURLSessionTaskPriorityDefaultNSURLSessionTaskPriorityLow, and NSURLSessionTaskPriorityHighNSURLSessionTask priorities can be used to specify how multiple requests and responses to the same host should be prioritized. Note that the priority is a hint and not a strict guarantee of NSURLSessionTask performance.

    For complete usage details of NSURLSessionTask priorities, refer to the NSURLSession.h header file, which is provided by the Foundation framework.

    Phone

    Note

    To activate Wi-Fi Calling functionality for T-Mobile (U.S. only), follow these steps:

    • Go to Settings > Phone > Wi-Fi Calling.

    • Toggle the Wi-Fi Calling switch to ON.

    • If the carrier does not have the user’s registered emergency address, you will be asked to add it before the feature is activated.

    Photos

    Notes

    • iCloud Photo Library requires beta 3 or later.

    • Back up your photo libraries before enabling iCloud Photo Library by:

      • Importing to your Mac using iPhoto

      • Importing to your Mac using Image Capture

    • Enabling iCloud Photo Library will not add photos/videos that have been synced with iTunes to the cloud.

    • iPhoto for iOS will not launch on iOS 8 Beta. Launching Photos.app will migrate your iPhoto edits to the iOS 8 Photo Library. Make sure your iPhoto for iOS data is included in your device backup.

    Known Issues

    • The ability to automatically optimize device space is not enabled in this beta.

    • When using iCloud Family, both iCloud Photos and My Photostream are enabled.

    • After restore from iCloud backup, modified photos may show unmodified thumbnails.

    • If you reach your iCloud quota, there is no way to add or delete data within the Photos app.

    Quicklook

    Known Issue

    PDF files may not display in some applications.

    Safari

    Notes

    • Safari now blocks ads from automatically redirecting to the App Store without user interaction. If you still see the previous behavior, or find legitimate redirection to the App Store to be broken in some way, please file a bug.

    • You can now quickly add a site to Shared Links or save a bookmark by tapping and holding on the bookmarks button.

    Settings

    Known Issue

    Some icons are missing in Settings and only appear after the row is tapped.

    Setup

    Known Issue

    Updating the iCloud settings screen may appear to hang during setup.

    Workaround: Some accounts may have an extra long lag. Wait a couple of minutes and they should complete.

    Siri

    Known Issue

    Calling contacts with Siri is supported only on devices with the latest developer seed build. Prior developer seed builds no longer support this feature.

    Springboard

    Fixed in beta 5

    Some projects may launch in portrait when the destination device is in landscape.

    Workaround: Rotate the device to portrait and back to landscape to continue in landscape.

    Stores

    Known Issue

    Sometimes, loading certain pages or performing a search on the App Store or iTunes Store can be slow.

    UIKit

    Notes

    • UILabel has a default value of YES for clipsToBounds. This differs from the normal UIView default of NO.

    • leftLayoutGuide and rightLayoutGuide API have been removed. Please use the layoutMargins property instead.

    Fixed in beta 5

    When the width of a multiline label changes due to changes in the layoutMargins of some view, the intrinsic content size of the label is not invalidated when it should be. As a result the layout can unexpectedly truncate the label (or text view).

    Workaround: The view whose layoutMargins are changing should override layoutMarginsDidChange and send invalidateIntrinsicContentSize to the label.

    Known Issue

    To use an action sheet-style UIAlertController on iPad, the sourceView of the alert controller's popoverPresentationController must be set.

    Wi-Fi Calling (T-Mobile US only)

    Note

    The carrier name in the status bar will show “T-Mobile Wi-Fi” when the device is able to make and receive Wi-Fi Calls.

    WebKit

    Notes

    • Subpixel rendering is now on by default for all web content. Websites or in-app web views with extremely tight design constraints may render differently. Solutions for each issue will vary, but use Web Inspector to adjust position, border thickness, and width or height of elements.

    • In iOS 8.0 beta 2 and later, CSS object model getters (offset{Left|Top|Width|Height} and client{Left|Top|Width|Height}) return fractional double values based on subpixel metrics instead of rounded integral values.

    • The minimal-ui viewport property is no longer supported in iOS 8.

    Known Issue

    The window.outerWidth and window.outerHeight DOM properties always return 0. Other DOM properties will need to be used instead. This may affect websites that use leaf.js.


    'iOS' 카테고리의 다른 글

    Xcode6 및 베타5 릴리즈노트 다운로드  (0) 2014.08.05
    iOS SDK Release Notes for iOS 8.0 Beta  (0) 2014.06.03
    iOS8 달라진 점 - What's New in iOS8  (0) 2014.06.03

     

    iOS 8.0

    This article summarizes the key developer-related features introduced in iOS 8, which runs on currently shipping iOS devices. The article also lists the documents that describe new features in more detail.

    For late-breaking news and information about known issues, see iOS 8 Release Notes. For the complete list of new APIs added in iOS 8, see iOS 8.0 API Diffs.

    App Extensions

    iOS 8 lets you extend select areas of the system by supplying an app extension, which is code that enables custom functionality within the context of a user task. For example, you might supply an app extension that helps users post content to your social sharing website. After users install and enable this extension, they can choose it when they tap the Share button in their current app. Your custom sharing extension provides the code that accepts, validates, and posts the user’s content. The system lists the extension in the sharing menu and instantiates it when the user chooses it.

    In Xcode, you create an app extension by adding a preconfigured app extension target to an app. After a user installs an app that contains an extension, the extension is enabled by the user in the Settings app. When the user is running other apps, the system makes the enabled extension available in the appropriate system UI, such as the Share menu.

    iOS supports app extensions for the following areas, which are known as extension points:

    • Share. Share content with social websites or other entities.

    • Action. Perform a simple task with the selected content.

    • Today. Provide a quick update or enable a brief task in the Today view of Notification Center.

    • Photo editing. Perform edits to a photo or video within the Photos app.

    • Storage provider. Provide a document storage location that can be accessed by other apps. Apps that use a document picker view controller can open files managed by the Storage Provider or move files into the Storage Provider.

    • Custom keyboard. Provide a custom keyboard that the user can choose in place of the system keyboard for all apps on the device.

    Each extension point defines appropriate APIs for its purposes. When you use an app extension template to begin development, you get a default target that contains method stubs and property list settings defined by the extension point you chose.

    For more information on creating extensions, see App Extension Programming Guide.

    Touch ID Authentication

    Your app can now use Touch ID to authenticate the user. Some apps may need to secure access to all of their content, while others might need to secure certain pieces of information or options. In either case, you can require the user to authenticate before proceeding. Use the Local Authentication Framework (LocalAuthentication.framework) to display an alert to the user with an application-specified reason for why the user is authenticating. When your app gets a reply, it can react based on whether the user was able to successfully authenticate.

    For more information, see Local Authentication Framework Reference.

    Photos

    Take better photos in your app, provide new editing capabilities to the Photos app, and create new, more efficient workflows that access the user’s photo and video assets.

    Photos Framework

    The Photos framework (Photos.framework) provides new APIs for working with photo and video assets, including iCloud Photos assets, that are managed by the Photos app. This framework is a more capable alternative to the Assets Library framework. Key features include a thread-safe architecture for fetching and caching thumbnails and full-sized assets, requesting changes to assets, observing changes made by other apps, and resumable editing of asset content.

    For more information, see Photos Framework Reference.

    Use the related Photos UI framework (PhotosUI.framework) to create app extensions for editing image and video assets in the Photos app. For more information, see App Extension Programming Guide.

    Manual Camera Controls

    The AV Foundation framework (AVFoundation.framework) makes it easier than ever to take great photos. Your app can take direct control over the camera focus, white balance, and exposure settings. In addition, your app can use bracketed exposure captures to automatically capture images with different exposure settings.

    For more information see AV Foundation Framework Reference.

    Games

    Technology improvements in iOS 8 make it easier than ever to implement your game’s graphics and audio features. Take advantage of high-level frameworks for ease-of-development, or use new low-level enhancements to harness the power of the GPU.

    Metal

    Metal provides extremely low-overhead access to the A7 GPU enabling incredibly high performance for your sophisticated graphics rendering and computational tasks. Metal eliminates many performance bottlenecks—such as costly state validation—that are found in traditional graphics APIs. Metal is explicitly designed to move all expensive state translation and compilation operations out of the critical path of your most performance sensitive rendering code. Metal provides precompiled shaders, state objects, and explicit command scheduling to ensure your application achieves the highest possible performance and efficiency for your GPU graphics and compute tasks. This design philosophy extends to the tools used to build your app. When your app is built, Xcode compiles Metal shaders in the project into a default library, eliminating most of the runtime cost of preparing those shaders.

    Graphics, compute, and blit commands are designed to be used together seamlessly and efficiently. Metal is specifically designed to exploit modern architectural considerations, such as multiprocessing and shared memory, to make it easy to parallelize the creation of GPU commands.

    With Metal, you have a streamlined API, a unified graphics and compute shading language, and Xcode-based tools, so you don’t need to learn multiple frameworks, languages and tools to take full advantage of the GPU in your game or app.

    For more information on using Metal, see Metal Programming Guide and Metal Framework Reference, and Metal Shading Language Guide.

    Scene Kit

    Scene Kit is an Objective-C framework for building simple games and rich app user interfaces with 3D graphics, combining a high-performance rendering engine with a high-level, descriptive API. Scene Kit has been available since OS X v10.8 and is now available in iOS for the first time. Lower-level APIs (such as OpenGL ES) require you to implement the rendering algorithms that display a scene in precise detail. By contrast, Scene Kit lets you describe your scene in terms of its content—geometry, materials, lights, and cameras—then animate it by describing changes to those objects.

    Scene Kit’s 3D physics engine enlivens your app or game by simulating gravity, forces, rigid body collisions, and joints. Add high-level behaviors that make it easy to use wheeled vehicles such as cars in a scene, and add physics fields that apply radial gravity, electromagnetism, or turbulence to objects within an area of effect.

    Use OpenGL ES to render additional content into a scene, or provide GLSL shaders that replace or augment Scene Kit’s rendering. You can also add shader-based post-processing techniques to Scene Kit’s rendering, such as color grading or screen space ambient occlusion.

    For more information, see Scene Kit Framework Reference.

    Sprite Kit

    The Sprite Kit framework (SpriteKit.framework) adds new features to make it easier to support advanced game effects. These features include support for custom OpenGL ES shaders and lighting, integration with Scene Kit, and advanced new physics effects and animations. For example, you can create physics fields to simulate gravity, drag, and electromagnetic forces using the SKFieldNode class. Physics bodies can now easily be created with per-pixel collision masks. And it is easier than ever to pin a physics body to its parent, even if its parent does not have a physics body of its own. These new physics features make complex simulations much easier to implement.

    Use constraints to modify the effects of physics and animations on the content of your scene—for example, you can make one node always point toward another node regardless of where the two nodes move.

    Xcode 6 also incorporates new shader and scene editors that save you time as you create your game. Create a scene’s contents, specifying which nodes appear in the scene and characteristics of those nodes, including physics effects. The scene is then serialized to a file that your game can easily load.

    For information about the classes of this framework, see Sprite Kit Framework Reference and Sprite Kit Programming Guide.

    AV Audio Engine

    AV Foundation framework (AVFoundation.framework) adds support for a broad cross-section of audio functionality at a higher level of abstraction than Core Audio. These new audio capabilities are available on both OS X and iOS and include automatic access to audio input and output hardware, audio recording and playback, and audio file parsing and conversion. You also gain access to audio units for generating special effects and filters, pitch and playback speed management, stereo and 3D audio environments, and MIDI instruments.

    For more information, see AV Foundation Framework Reference.

    Health Kit Framework

    Health Kit (HealthKit.framework) is a new framework for managing a user’s health-related information. With the proliferation of apps and devices for tracking health and fitness information, it's difficult for users to get a clear picture of how they are doing. Health Kit makes it easy for apps to share health-related information, whether that information comes from devices connected to an iOS device or is entered manually by the user. The user’s health information is stored in a centralized and secure location. The user can then see all of that data displayed in the Health app.

    When your app implements support for Health Kit, it gets access to health-related information for the user and can provide information about the user, without needing to implement support for specific fitness-tracking devices. The user decides which data should be shared with your app. Once data is shared with your app, your app can register to be notified when that data changes; you have fine-grained control over when your app is notified. For example, you could request that your app be notified whenever the user takes his or her blood pressure, or be notified only when a measurement shows that the user’s blood pressure is too high.

    Home Kit Framework

    Home Kit (HomeKit.framework) is a new framework for communicating with and controlling connected devices in a user’s home. New devices being introduced for the home are offering more connectivity and a better user experience. Home Kit provides a standardized way to communicate with those devices.

    Your app can use Home Kit to communicate with devices that users have in their homes. Using your app, users can discover devices in their home and configure them. They can also create actions to control those devices. The user can group actions together and trigger them using Siri. Once a configuration is created, users can invite other people to share access to it. For example, a user might temporarily offer access to a house guest.

    Use the Home Kit Accessory Simulator to test the communication of your Home Kit app with a device.

    For more information, see Home Kit Framework Reference.

    iCloud

    iCloud includes some changes that impact the behavior of existing apps and that will affect users of those apps.

    Document-Related Data Migration

    The iCloud infrastructure is more robust and reliable when documents and data are transferred between user devices and the server. When a user installs iOS 8 and logs into the device with an iCloud account, the iCloud server performs a one-time migration of the documents and data in that user’s account. This migration involves copying the documents and data to a new version of the app’s container directory. This new container is accessible only to devices running iOS 8 or OS X v10.10. Devices running older operating systems will continue to have access to the original container, but changes made in that container will not appear in the new container and vice versa.

    Cloud Kit

    Cloud Kit (CloudKit.framework) provides a conduit for moving data between your app and iCloud. Unlike other iCloud technologies where data transfers happen transparently, Cloud Kit gives you control over when transfers occur. You can use Cloud Kit to manage all types of data.

    Apps that use Cloud Kit directly can to store data in a repository that is shared by all users. This public repository is tied to the app itself and is available even on devices without a registered iCloud account. As the app developer, you can manage the data in this container directly and see any changes made by users through the Cloud Kit dashboard.

    For more information about the classes of this framework, see Cloud Kit Framework Reference.

    Document Picker

    The document picker view controller (UIDocumentPickerViewController) grants users access to files outside your application’s sandbox. It is a simple mechanism for sharing documents between apps. It also enables more complex workflows, because users can edit a single document with multiple apps.

    The document picker lets you access files from a number of document providers. For example, the iCloud document provider grants access to documents stored inside another app’s iCloud container. Third-party developers can provide additional document providers by using the Storage Provider extension.

    For more information, see the Document Picker Programming Guide.

    Handoff

    Handoff is a feature in OS X and iOS that extends the user experience of continuity across devices. Handoff enables users to begin an activity on one device, then switch to another device and resume the same activity on the other device. For example, a user who is browsing a long article in Safari moves to an iOS device that's signed into the same Apple ID, and the same webpage automatically opens in Safari on iOS, with the same scroll position as on the original device. Handoff makes this experience as seamless as possible.

    To participate in Handoff, an app adopts a small API in Foundation. Each ongoing activity in an app is represented by a user activity object that contains the data needed to resume an activity on another device. When the user chooses to resume that activity, the object is sent to the resuming device. Each user activity object has a delegate object that is invoked to refresh the activity state at opportune times, such as just before the user activity object is sent between devices.

    If continuing an activity requires more data than is easily transferred by the user activity object, the resuming app has the option to open a stream to the originating app. Document-based apps automatically support activity continuation for users working with iCloud-based documents.

    For more information, see Handoff Programming Guide.

    Unified Storyboards for Universal Apps

    iOS 8 makes dealing with screen size and orientation much more versatile. It is easier than ever to create a single interface for your app that works well on both iPad and iPhone, adjusting to orientation changes and different screen sizes as needed. Design apps with a common interface and then customize them for different size classes. Adapt your user interface to the strengths of each form factor. You no longer need to create a specific iPad storyboard; instead target the appropriate size classes and tune your interface for the best experience.

    There are two types of size classes in iOS 8: regular and compact. A regular size class denotes either a large amount of screen space, such as on an iPad, or a commonly adopted paradigm that provides the illusion of a large amount of screen space, such as scrolling on an iPhone. Every device is defined by a size class, both vertically and horizontally. iPad size classes shows the native size classes for the iPad. With the amount of screen space available, the iPad has a regular size class in the vertical and horizontal directions in both portrait and landscape orientations.

    Figure 1  iPad size classes in portrait
    Figure 2  iPad size classes in landscape

    The iPhone has different size classes based on the orientation of the device. In portrait, the screen has a compact size class horizontally and a regular size class vertically. This corresponds to the common usage paradigm of scrolling vertically for more information. When the device is in landscape, it has a compact size class both horizontally and vertically. iPhone size classes shows the native classes for the iPhone.

    Figure 3  iPhone size classes in portrait
    Figure 4  iPhone size classes in landscape

    Every view has a size class associated with it that you can change. This flexibility is especially useful when a smaller view is contained within a larger view. You can use the default size classes to arrange the user interface of the larger view and arrange information in the subview based on a different size class combination.

    To support size classes, the following classes are new or modified:

    • The UITraitCollection class is used to describe a collection of traits assigned to an object. Traits specify the size class, display scale, and idiom for a particular object. Classes that support the UITraitEnvironment protocol (such as UIViewController and UIView) own a trait collection. You can retrieve an object’s trait collection and perform actions when those traits change.

    • The UIImageAsset class is used to group like images together based on their traits. Combine similar images with slightly different traits into a single asset and then automatically retrieve the correct image for a particular trait collection from the image asset. The UIImage class has been modified to work with image assets.

    • Classes that support the UIAppearance protocol can customize an object’s appearance based on its trait collection.

    • The UIViewController class adds the ability to retrieve the trait collection for a child view. You can also lay out the view by changing the size class change through the viewWillTransitionToSize:withTransitionCoordinator: method.

    Xcode 6 supports unified storyboards. Add or remove views and layout constraints based on the size class that the view controller is displayed in. Use Xcode 6 to test your app in a variety of size classes and screen sizes, making it easier than ever to design interfaces that adapt to the conditions under which they are running. Rather than maintaining two separate (but similar) storyboards, you can make a single storyboard for multiple size classes.

    Additional Framework Changes

    In addition to the major changes described above, iOS 8 includes other improvements.

    API Modernization

    Many frameworks on iOS have adopted small interface changes that take advantage of modern Objective-C syntax:

    • Getter and setter methods are replaced by properties in most classes. Code using the existing getter and setter methods should continue to work with this change.

    • Initialization methods are updated to have a return value of instancetype instead of id.

    • Designated initializers are declared as such where appropriate.

    In most cases, these changes do not require any additional work in your own app. However, you may also want to implement these changes in your own Objective-C code. In particular, you may want to modernize your Objective-C code for the best experience when interoperating with Swift code.

    For more information, see Adopting Modern Objective-C.

    AV Foundation Framework

    The AV Foundation framework (AVFoundation.framework) enables you to capture metadata over time while shooting video. Arbitrary types of metadata can be embedded with a video recording at various points in time. For example, you might record the current physical location in a video created by a moving camera device.

    For information about the classes of this framework, see AV Foundation Framework Reference.

    AV Kit Framework

    The AV Kit framework (AVKit.framework) previously introduced on OS X is available on iOS. Use it instead of Media Player framework when you need to display a video.

    Core Image Framework

    The Core Image framework (CoreImage.framework) has the following changes:

    • You can create custom image kernels in iOS.

    • Core image detectors can detect rectangles and QR codes in an image.

    For information about the classes of this framework, see Core Image Reference Collection.

    Core Location Framework

    The Core Location framework (CoreLocation.framework) has the following changes:

    • You can determine which floor the device is on, if the device is in a multistory building.

    • The visit service provides an alternative to the significant location change service for apps that need location information about interesting places visited by the user.

    For information about the classes of this framework, see Core Location Framework Reference.

    Foundation Framework

    The Foundation framework (Foundation.framework) includes the following enhancements:

    • The NSFileVersion class provides access to past versions of iCloud documents. These versions are stored in iCloud, but can be downloaded on request.

    • The NSURL class supports storing document thumbnails as metadata.

    • The NSMetadataQuery class can search for external iCloud documents that your app has opened.

    Game Controller Framework

    The Game Controller framework (GameController.framework) has the following changes:

    • If the controller is attached to a device, you can now receive device motion data directly from the Game Controller framework.

    • If you are working with button inputs and do not care about pressure sensitivity, a new handler can call your game only when the button’s pressed state changes.

    Game Kit Framework

    The Game Kit framework (GameKit.framework) has the following changes:

    • Features that were added in iOS 7 are available on OS X 10.10, making it easier to use these features in a cross-platform game.

    • The new GKSavedGame class makes it easy to save and restore a user’s progress. The data is stored on iCloud; Game Kit does the necessary work to synchronize the files between the device and iCloud.

    • Methods and properties that use player identifier strings are now deprecated. Instead, use GKPlayer objects to identify players. Replacement properties and methods have been added that take GKPlayer objects.

    iAd Framework

    The iAd framework (iAd.framework) adds the following new features:

    • If you are using AV Kit to play a video, you can play preroll advertisements before the video is played.

    • You can look up more information about the the effectiveness of advertisements for your app.

    For information about the classes of this framework, see iAd Framework Reference.

    Media Player Framework

    Two Media Player framework (MediaPlayer.framework) classes are extended with new metadata information.

    For information about the classes of this framework, see Media Player Framework Reference.

    Sprite Kit Framework Changes

    The Sprite Kit framework (SpriteKit.framework) adds many new features:

    • An SKShapeNode object can specify textures to be used when the shape is either stroked or filled.

    • The SKSpriteNode, SKShapeNode, SKEmitterNode, and SKEffectNode classes include support for custom rendering. Use the SKShader and SKUniform classes to compile an OpenGL ES 2.0-based fragment shader and provide input data to the shader.

    • SKSpriteNode objects can provide lighting information so that Sprite Kit automatically generates lighting effects and shadows. Add SKLightNode objects to the scene to specify the lights, and then customize the properties on these lights and any sprites to determine how the scene is lit.

    • The SKFieldNode class provides a number of physics special effects you can apply to a scene. For example, create magnetic fields, add drag effects, or even generate randomized motion. All effects are constrained to a specific region of the scene and you can carefully tune both the effect’s strength and how quickly the effect is weakened by distance. Field nodes make it easy to drop in an effect without having to search the entire list of physics bodies and apply forces to them.

    • A new SK3DNode class is used to integrate a Scene Kit scene into your game as a sprite. Each time that Sprite Kit renders your scene, it renders the 3D scene node first to generate a texture, then uses that texture to render a sprite in Sprite Kit. Creating 3D sprites can help you avoid needing to create dozens of frames of animation to produce an effect.

    • New actions have been added, including support for inverse kinematic animations.

    • A new system of constraints has been added to scene processing. Constraints are applied after physics is simulated and can be used to specify a set of rules for how a node is positioned and oriented. For example, you can use a constrant to specify that a particular node in the scene always points at another node in the scene. Constraints make it easier to implement rendering rules in your game without having to manually tweak the scene in your event loop.

    • A scene can implement all of the run-loop stages in a delegate instead. Using a delegate often means that you can avoid needing to subclass the SKScene class.

    • The SKView class provides more debugging information. You can also provide more performance hints to the renderer.

    • You can create normal map textures for use in lighting and physics calculations (or inside your own custom shaders). Use the new SKMutableTexture class when you need to create textures whose contents are dynamically updated.

    • You can dynamically generate texture atlases at runtime from a collection of textures.

    Xcode 6 also incorporates many new Sprite Kit editors. Create or edit the contents of scenes directly, specifying the nodes that appear in the scene as well as their physics bodies and other characteristics. This scene is serialized to a file and can be loaded directly by your game. The editors save you time because often you don’t need to implement your own custom editors to create your game’s assets.

    For information about the classes of this framework, see Sprite Kit Framework Reference and Sprite Kit Programming Guide.

    UIKit Framework

    The UIKit framework (UIKit.framework) includes the following enhancements:

    • Apps that use local or push notifications must explicitly register the types of alerts that they display to users by using a UIUserNotificationSettings object. This registration process is separate from the process for registering remote notifications, and users must grant permission to deliver notifications through the requested options.

    • Local and push notifications can include custom actions as part of an alert. Custom actions appear as buttons in the alert. When tapped, your app is notified and asked to perform the corresponding action. Local notifications can also be triggered by interactions with Core Location regions.

    • Collection views support dynamically changing the size of cells. Typically, you use this support to accommodate changes to the preferred text size, but you can adapt it for other scenarios too. Collection views also support more options for invalidating different portions of the layout and thereby improving performance.

    • The UISearchController class replaces the UISearchDisplayController class for managing the display of search-related interfaces.

    • The UIViewController class adopts traits and the new sizing techniques for adjusting the view controller’s content, as described in Unified Storyboards for Universal Apps.

    • The UISplitViewController class is now supported on iPhone as well as iPad. The class adjusts its presented interface to adapt to the available space. It also changes the way it shows and hides the primary view controller, giving you more control over how to display the split view interface.

    • The UINavigationController class has new options for changing the size of the navigation bar or hiding it altogether by using gestures.

    • The new UIVisualEffect class enables you to integrate custom blur effects into your view hierarchies.

    • The new UIPresentationController class lets you separate the content of your view controllers from the chrome used to display them.

    • The new UIPopoverPresentationController class handles the presentation of content in a popover. The existing UIPopoverController class uses the popover presentation controller to show popovers on the screen.

    • The new UIAlertController class replaces the UIActionSheet and UIAlertView classes as the preferred way to display alerts in your app.

    • The new UIPrinterPickerController class offers a view controller-based way to display a list of printers and to select one to use during printing. Printers are represented by instances of the new UIPrinter class.

    • You can take the user directly to your app-related settings in the Settings app. Pass the UIApplicationOpenSettingsURLString constant to the openURL: method of the UIApplication class.

    For information about the classes of this framework, see UIKit Framework Reference.

    Video Toolbox Framework

    The Video Toolbox framework (VideoToolbox.framework) includes direct access to hardware video encoding and decoding.

    Deprecated APIs

    The following APIs are deprecated:

    For a complete list of specific API deprecations, see iOS 8.0 API Diffs.

     

     

     

    'iOS' 카테고리의 다른 글

    iOS SDK Release Notes for iOS 8.0 Beta  (0) 2014.06.03
    iOS8 for Developers  (0) 2014.06.03
    iOS 7.1 beta 5 Release Notes  (0) 2014.02.05

     

    + Recent posts