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. For more information on new devices, see iOS Device Compatibility Reference.

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, user enables the extension 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.

PassKit

The PassKit framework adds support for payment passes and payment requests. Payment requests let users securely provide you with their payment and contact information to pay for physical goods and services. Payment passes are added to Passbook by payment networks, such as credit card issuers and banks, and let the user select their account on that payment network to fund payments.

For more information, see PassKit 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.

Improved Camera Functionality

Use the following APIs to discover and enable new camera features found on the iPhone 6 and iPhone 6 Plus:

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 and A8 GPUs, enabling extremely 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 GuideMetal Framework Reference, and Metal Shading Language Guide.

SceneKit

SceneKit 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. SceneKit 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, SceneKit lets you describe your scene in terms of its content—geometry, materials, lights, and cameras—then animate it by describing changes to those objects.

SceneKit’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 SceneKit’s rendering. You can also add shader-based postprocessing techniques to SceneKit’s rendering, such as color grading or screen space ambient occlusion.

For more information, see SceneKit Framework Reference.

SpriteKit

The SpriteKit 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 SceneKit, 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. You can easily create physics bodies 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 SpriteKit Framework Reference and SpriteKit Programming Guide.

AV Audio Engine

AVFoundation 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.

OpenGL ES

iOS 8 adds the following new extensions to OpenGL ES.

  • The APPLE_clip_distance extension adds support for hardware clip planes to OpenGL ES 2.0 and 3.0.

  • The APPLE_texture_packed_float adds two new floating-point texture formats, R11F_G11F_B10F and RGB9_E5.

  • The APPLE_color_buffer_packed_float extension builds on APPLE_texture_packed_float so that the new texture formats can be used by a framebuffer object. This means that an app can render into a framebuffer that uses one of these formats.

HealthKit Framework

HealthKit (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. HealthKit 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 HealthKit, 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, request that your app be notified whenever users takes their blood pressure, or be notified only when a measurement shows that the user’s blood pressure is too high.

HomeKit Framework

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

Your app can use HomeKit 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 HomeKit Accessory Simulator to test the communication of your HomeKit app with a device.

For more information, see HomeKit Framework Reference.

iCloud

iCloud includes some changes that affect the behavior of existing apps and that 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. The new container is accessible only to devices running iOS 8 or OS X v10.10. Devices running older operating systems can continue to access to the original container, but changes made in that container do not appear in the new container and changes made in the new container do not appear in the original container.

CloudKit

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

Apps that use CloudKit directly can 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 CloudKit dashboard.

For more information about the classes of this framework, see CloudKit 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 in to 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.

Supporting New Screen Sizes and Scales

Apps linked against iOS 8 and later should be prepared to support the larger screen size of iPhone 6 and iPhone 6 Plus. On the iPhone 6 Plus, apps should also be prepared to support a new screen scale. In particular, apps that support OpenGL ES and Metal can also choose to size their rendering CAEAGLLayeror CAMetalLayer to get the best possible performance on the iPhone 6 Plus.

To let the system know that your app supports the iPhone 6 screen sizes, include a storyboard launch screen file in your app’s bundle. At runtime, the system looks for a storyboard launch screen file. If such an file is present, the system assumes that your app supports the iPhone 6 and 6 Plus explicitly and runs it in fullscreen mode. If such an image is not present, the system reports a smaller screen size (either 320 by 480 points or 320 by 568 points) so that your app’s screen-based calculations continue to be correct. The contents are then scaled to fit the larger screen.

For more information about specifying the launch images for your app, see Adding App Icons and a Launch Screen File.

iOS 8 adds new features that make 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. Using size classes, you can retrieve general information about the size of a device in its current orientation. You can use this information to make initial assumptions about which content should be displayed and how those interface elements are related to each other. Then, use Auto Layout to resize and reposition these elements to fit the actual size of the area provided. Xcode 6 uses size classes and autolayout to create storyboards that adapt automatically to size class changes and different screen sizes.

Traits Describe the Size Class and Scale of an Interface

Size classes are traits assigned to a user interface element, such as a screen or a view. 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.

Figure 1 and Figure 2 show 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 size classes for iPhones differ based on the kind of device and its orientation. 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 iPhones are in landscape, their size classes vary. Most iPhones have a compact size class both horizontally and vertically, as shown in Figure 3 and Figure 4. The iPhone 6 Plus has a screen large enough to support regular width in landscape mode, as shown in Figure 5.

Figure 3  iPhone size classes in portrait
Figure 4  iPhone size classes in landscape
Figure 5  iPhone 6 Plus classes in landscape

You can change the size classes associated with a view. This flexibility is especially useful when a smaller view is contained within a larger view. Use the default size classes to arrange the user interface of the larger view and arrange information in the subview based on whatever size classes you feel is most appropriate to that subview.

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 UIScreenUIViewController 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. A storyboard can add or remove views and layout constraints based on the size class that the view controller is displayed in. Rather than maintaining two separate (but similar) storyboards, you can make a single storyboard for multiple size classes. First, design your storyboard with a common interface and then customize it for different size classes, adapting the interface to the strengths of each form factor. Use Xcode 6 to test your app in a variety of size classes and screen sizes to make sure that your interface adapts to the new sizes properly.

Supporting New Screen Scales

The iPhone 6 Plus uses a new Retina HD display with a very high DPI screen. To support this resolution, iPhone 6 Plus creates a UIScreen object with a screen size of 414 x 736 points and a screen scale of 3.0 (1242 x 2208 pixels). After the contents of the screen are rendered, UIKit samples this content down to fit the actual screen dimensions of 1080 x 1920. To support this rendering behavior, include new artwork designed for the new 3x screen scale. In Xcode 6, asset catalogs can include images at 1x2x, and 3x sizes; simply add the new image assets and iOS will choose the correct assets when running on an iPhone 6 Plus. The image loading behavior in iOS also recognizes an @3x suffix.

In a graphics app that uses Metal or OpenGL ES, content can be easily rendered at the precise dimensions of the display without requiring an additional sampling stage. This is critical in high-performance 3D apps that perform many calculations for each rendered pixel. Instead, create buffers to render into that are the exact resolution of the display.

UIScreen object provides a new property (nativeScale) that provides the native screen scale factor for the screen. When the nativeScale property has the same value as the screen’sscale property, then the rendered pixel dimensions are the same as the screen’s native pixel dimensions. When the two values differ, then you can expect the contents to be sampled before they are displayed.

If you are writing an OpenGL ES app, a GLKView object automatically creates its renderbuffer objects based on the view’s size and the value of itscontentScaleFactor property. After the view has been added to a window, set the view’s contentScaleFactor to the value stored in the screen’snativeScale property, as shown in Listing 1.

Listing 1  Supporting native scale in a GLKView object

- (void) didMoveToWindow
{
    self.contentScaleFactor = self.window.screen.nativeScale;
}

In a Metal app, your own view class should have code similar to the code found in Listing 1. In addition, whenever your view’s size changes, and prior to asking the Metal layer for a new drawable, calculate and set the metal layer’s drawableSize property as shown in Listing 2. (An OpenGL ES app that is creating its own renderbuffers would use a similar calculation.)

Listing 2  Adjusting the size of a Metal layer to match the native screen scale

CGSize drawableSize = self.bounds.size;
drawableSize.width  *= self.contentScaleFactor;
drawableSize.height *= self.contentScaleFactor;
metalLayer.drawableSize = drawableSize;

See MetalBasic3D for a working example. The Xcode templates for OpenGL ES and Metal also demonstrate these same techniques.

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 continues 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.

AVKit Framework

The AVKit 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.

CoreAudioKit Framework

The new CoreAudioKit framework simplifies the effort required to create user interfaces for apps that take advantage of inter-app audio.

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.

Core Motion Framework

Core Motion provides two new classes (CMAltimeter and CMAltitudeData) which allow you to access the barometer on the iPhone 6 and iPhone 6 Plus. On these two devices, you can also use a CMMotionActivity object to determine whether the user is on a bicycle.

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.

GameKit Framework

The GameKit 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 and new methods in GKLocalPlayer make it easy to save and restore a user’s progress. The data is stored on iCloud; GameKit 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.

Network Extension Framework

Use the new Network Extension framework (NetworkExtension.framework) to configure and control virtual private networks (VPN).

SpriteKit Framework Changes

The SpriteKit 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 SKSpriteNodeSKShapeNodeSKEmitterNode, and SKEffectNode classes include support for custom rendering. Use the SKShader andSKUniform 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 SpriteKit automatically generates lighting effects and shadows. Add SKLightNodeobjects 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 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 SceneKit scene into your game as a sprite. Each time that SpriteKit renders your scene, it renders the 3D scene node first to generate a texture, then uses that texture to render a sprite in SpriteKit. Creating 3D sprites can help you avoid creating 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. SpriteKit applies constraints after physics is simulated, and you use them to specify a set of rules for how a node is positioned and oriented. For example, you can use a constraint 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 tweak the scene manually in your event loop.

  • A scene can implement all of the run-loop stages in a delegate instead of subclassing the SKScene class. 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 SKMutableTextureclass when you need to create textures whose contents are dynamically updated.

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

Xcode 6 also incorporates many new SpriteKit 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. The 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 SpriteKit Framework Reference and SpriteKit 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 UIUserNotificationSettingsobject. 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. The class 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.

  • 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 theUIApplicationOpenSettingsURLStringUIApplicationOpenSettingsURLString 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.

Webkit Framework

A number of new classes have been added to make it easier to create high-performance native apps that utilize web content. See WebKit Framework Reference.

Deprecated APIs

The following APIs are deprecated:

  • The UIApplication methods and properties for registering notifications. Use the new API instead.

  • The UIViewController methods and properties for interface orientation. Traits and size classes replace them, as described in Unified Storyboards for Universal Apps. There are other smaller changes to UIKit API to support size classes; often older interfaces that used specific device idioms have been replaced.

  • The UISearchDisplayController class. This class is replaced by the UISearchController class.

  • Methods and properties in GameKit that use player identifier strings.

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


몇일전 포스팅 으로 소개를 했던 달팽 모바일 청첩장을 실제로 사용해 보았다.


현재 오픈 이벤트로 개인의 경우 한개의 청첩장이 무료 생성이 가능하다 (동시에 결혼을 두번할일이 없으니 ;; 한개면 충분!!)


만들었던 도메인을 바꾸려고 삭제했다가 새로 생성하니 과금이 되서 고객센터 문의해서 기존주소를 복구했다;; (주의)


달팽 바로가기 : http://dalpeng.com


1. 우선 회원가입~! (단순한 내용의 내용 입력후 메일 인증만 받으면 가입 끝)


- 가입후 상단에 신청하기를 클릭해서 신청을 진행한다 ( 현재 오픈이벤트로 완전 무료 )



2. 로그인후 메인 화면 에서 우측 상단 초대장 관리를 클릭 하면 생성했던 청첩장 이 나오고 '관리' 버튼을 클릭





3. 여기가 청첩장 내용을 입력 관리하는 빌더 화면이다. 중간에 보이는 탭메뉴를 클릭하면 각각의 내용을 수정/설정 할수 있다.

(여기서 왼쪽의 휴대폰 화면 미리보기 화면에 우측에 입력내용 클릭해서 보고있는 내용부분이 실시간으로 반영되어 보여진다!)







신랑 신부 사진을 각각 올리라고 되어있는데 이건 왜그런가 했더니 특정 스킨 좌우측에 신랑 신부의 연락처 등의 공간이 있는데 그부분에 나오는 사진이였다.

사진 업로드후 좌측 공간에서 스크롤 / 드래그로 사진을 크롭 할수있었다 (페이스북 사진 크롭 UI 와 동일한)




방명록은 다른 곳과는 다르게 2종의 자체 제작 이모티콘을 제공하고있다. ㅎㅎ 나름 귀엽고 재미있는 이모티콘이 많아 쓸만해 보임






갤러리는 여러사진을 동시에 올릴수도 있고~ 순서 변경도 드래그로 쉽게 가능했다







기본적인 SNS 공유기능~ 사진 첨부 가능한 카카오톡, 라인 공유 기능  까지~




모든 입력 후 우측 하단의 초대장 수정하기를 클릭하면 완료~



개인정보 보호상 내용중 일부는 포토샾으로 지웠다. (큐알코드까지 지우는 치밀함 ㅋㅋ)


달팽 자체내에 문자 보내기 를 이용하면 생성된 주소를 이미지와 함께 MMS 를 보낼수도 있었다.


재미있던건 자신의 주소뒤에 .qr 를 입력하면 바로 큐알코드 주소를 사용 할수있었다.


태그를 조금 안다면 <img src="http://dalpeng.com/주소.qr" /> 의 태그로 자신의 블로그에도 직접 큐알코드를 쉽게 넣을수도 있다.






달팽 바로가기 : http://dalpeng.com




무료 반응형 모바일 청첩장 서비스 달팽 오픈



반응형이란?


쉽게 얘기해서 하나의 사이트가 데스크탑  모니터 사이즈 상관없이, 태블릿 pc 화면, 모바일 화면 에서 모두 알맞게 구성된 화면으로 제공되는 형태를 의미한다.


반응형이고, 스마트폰 네비게이션 연결되는기능에, 이모티콘 쓰는 방명록 까지 무료로 사용이 가능하다~


결혼 준비 하시는분들께 도움이 될듯 합니다.


사이트 주소 : 달팽 (http://dalpeng.com)



아래는 달팽측 서비스 소개 


---------------------------------------------------------------



주요기능

Invitation card 세상에 없던 초대장

PC, 테블릿, 모바일에 모두 반응하는 초대장, 
보내기만 하고 끝이였던 초대장이 아니라 
이제는 친구들 지인들과의 커뮤니케이션이 가능한 초대장, 
예식이 끝나도 갤러리 앨범, 방명록에서 소식을 전하는 초대장

01

PC, 모바일, 태블릿 
어떤 화면이든 
자유자재로 알맞게

제이쿼리 모바일을 이용한 반응형 스킨으로 
어떠한 기기에서든 자유자재로 알맞게 형태가 맞춰집니다.

02

보내기만 하고 끝이었던 
초대장이 아니라
친구들 지인들과의 
커뮤니케이션이 가능

SNS를 통해 나의 웨딩앨범과 방명록에 친구들이 글을 남기고 
내가 그 글에 답글을 남기고 그 글은 sns로 공유가 되며 
자연스레 커뮤니티가 형성되어 초대장 이상의 가치를 얻게 됩니다.

03

초대장에서 
버튼만 누르면
네비로 바로 연결

초대장과 네비게이션 앱 연동으로
초대장의 네비 버튼만 누르면 예식장으로
바로 길찾기 안내가 시작됩니다.

04

문자나 카카오톡에서
이미지 전송으로
스미싱 걱정없이!

이미지를 함께 전송함으로써
최근 많은 사람들이 꺼려하는 모바일 초대장 스미싱
오해에서 벗어날 수 있습니다.

05

웨딩사진을
더욱 즐겁게 볼 수 있는
사진 댓글 기능

나의 웨딩앨범에 올린 사진에도 여러 사람이 댓글을 달 수 있어 
더욱 즐겁게 청첩장을 보실 수 있습니다.

06

다양한 이모티콘으로
커뮤니케이션을
더욱 풍성하게

달팽이에서 특별 제작한 이모티콘으로 
초대장의 커뮤니케이션을 더욱 풍성하게 나눌 수 있습니다.


MS14-045: 커널 모드 드라이버용 보안 업데이트에 대한 설명: 2014년 8월 12일

 

윈도우7 64bit 에서 가장 문제가 되는듯 하네요.

 

심하면 블루 스크린에... 부팅까지 안되고, 마소에서 직접 삭제 권고까지 할 정도니...

 

 

 

Microsoft는 보안 공지 MS14-045를 발표했습니다. 이 보안 공지에 대해 자세히 알아보십시오.

이 보안 업데이트에 대한 도움말 및 지원을 받는 방법

업데이트 설치 도움말: Microsoft Update 지원



IT 전문가용 보안 솔루션: TechNet 보안 문제 해결 및 지원



Windows 기반 컴퓨터 Windows를 바이러스 및 맬웨어로부터 보호: 바이러스 솔루션 및 보안 센터



지역별 지원 정보: 국가별 지원

 

 

 

이 보안 업데이트의 알려진 문제

  • 알려진 문제 1
    이 보안 업데이트를 설치한 후 기본 글꼴 디렉터리(%windir%\fonts\)가 아닌 위치에 설치된 글꼴을 활성 세션에 로드하는 경우 이 글꼴을 변경할 수 없습니다. 이러한 글꼴을 변경, 대체 또는 삭제하려는 시도가 차단되고, "사용 중인 파일" 메시지가 나타납니다.

    자세한 내용은 다음 Microsoft 웹 페이지를 참조하십시오.
    글꼴 설치 및 삭제
    AddFontResource 함수
    AddFontResourceEx 함수
    RemoveFontResource 함수
    RemoveFontResourceEx 함수


  • 알려진 문제 2
    Microsoft는 다음 업데이트를 설치한 후 글꼴이 제대로 렌더링되지 않는 문제를 조사하고 있습니다.
    2982791 MS14-045: 커널 모드 드라이버용 보안 업데이트에 대한 설명: 2014년 8월 12일
    2970228 Windows에서 러시아 루블에 대한 새로운 통화 기호를 지원하기 위한 업데이트 (영어로 표시될 수 있습니다)
    2975719 Windows RT 8.1, Windows 8.1 및 Windows Server 2012 R2에 대한 2014년 8월 업데이트 롤업
    2975331 Windows RT, Windows 8 및 Windows Server 2012에 대한 2014년 8월 업데이트 롤업
    상태
    이러한 문제에 대한 조사가 진행되는 동안 해당 업데이트에 대한 다운로드 링크를 제거했습니다.

    완화
    제어판에서 프로그램 및 기능 항목을 열고 설치된 업데이트 보기를 클릭합니다. 다음 중 현재 설치된 업데이트를 모두 찾아 제거합니다.
    • KB2982791
    • KB2970228
    • KB2975719
    • KB2975331
  • 알려진 문제 3
    Microsoft는 다음 업데이트를 설치한 후 0x50 중지 오류 메시지(버그 확인)가 표시되고 시스템 작동이 중단될 수 있는 문제를 조사하고 있습니다.
    2982791 MS14-045: 커널 모드 드라이버용 보안 업데이트에 대한 설명: 2014년 8월 12일
    2970228 Windows에서 러시아 루블에 대한 새로운 통화 기호를 지원하기 위한 업데이트 (영어로 표시될 수 있습니다)
    2975719 Windows RT 8.1, Windows 8.1 및 Windows Server 2012 R2에 대한 2014년 8월 업데이트 롤업
    2975331 Windows RT, Windows 8 및 Windows Server 2012에 대한 2014년 8월 업데이트 롤업
    이 조건은 영구적일 수 있으며 시스템이 제대로 시작되지 못하게 할 수 있습니다.

    상태
    이러한 문제에 대한 조사가 진행되는 동안 해당 업데이트에 대한 다운로드 링크를 제거했습니다.

    완화
    1. 안전 모드에서 컴퓨터를 다시 시작합니다.
      • Windows 7
      • Windows 8 및 Windows 8.1:
        1. Windows 8.1용 설치 미디어(예: DVD 또는 USB)가 있는 경우 설치 미디어를 사용하여 컴퓨터를 시작합니다. DVD 또는 USB 플래시 드라이브를 넣고 컴퓨터를 다시 시작합니다. "DVD에서 부팅하려면 아무 키나 누르십시오."와 같은 메시지가 표시되면 다음을 수행하십시오. 이러한 메시지가 표시되지 않는 경우 컴퓨터가 DVD 또는 USB로 먼저 시작되도록 컴퓨터의 BIOS 설정에서 다시 시작 순서를 변경해야 할 수 있습니다. Windows 설치 페이지가 표시되면 컴퓨터 복구를 클릭하여 Windows 복구 환경을 시작해야 합니다.
        2. 미디어가 없는 경우 전원 단추를 사용하여 시작 프로세스 중에 컴퓨터를 세 번 다시 시작해야 합니다. 그러면 Windows 복구 환경이 시작되어야 합니다.
        3. 컴퓨터가 Windows 복구 환경에서 시작되자마자 옵션 선택 화면에서 문제 해결을 탭하거나 클릭합니다. 시작 설정 옵션이 표시되지 않는 경우 고급 옵션을 탭하거나 클릭합니다.
        4. 시작 설정을 탭하거나 클릭한 다음 다시 시작을 탭하거나 클릭합니다.
        5. 시작 설정 화면에서 원하는 시작 설정을 선택합니다. (안전 모드는 4를 누릅니다.)
        6. 관리자 권한이 있는 사용자 계정을 사용하여 컴퓨터에 로그인합니다.
    2. fntcache.dat 파일을 삭제합니다. 이렇게 하려면 명령 프롬프트 에서 다음 명령을 입력하고 Enter 키를 누릅니다.
      del %windir%\system32\fntcache.dat
    3. fntcache.dat를 삭제한 후 컴퓨터를 다시 시작합니다. 이제 컴퓨터가 시작되어야 합니다.
    4. 시작, 실행을 차례로 클릭하고 열기 상자에 regedit를 입력한 다음 확인을 클릭합니다.
    5. 레지스트리에서 다음 하위 키를 찾아 클릭합니다.
      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Fonts\ 
    6. Fonts 레지스트리 하위 키를 마우스 오른쪽 단추로 클릭한 다음 내보내기를 클릭합니다.
    7. 내보낸 reg 파일에 대한 이름을 입력하고 이 파일을 저장할 위치를 선택합니다. 나중에 이 파일을 사용하여 다음 단계에서 제거되는 글꼴 등록을 복원합니다.
    8. reg 파일을 저장한 후 Fonts 레지스트리 하위 키 아래에서 다음 조건을 충족하는 데이터 필드에 대한 레지스트리 값을 찾습니다.
      • 파일 이름만 있는 것이 아니라 전체 파일 경로가 포함됨
      • 전체 파일 경로가 ".otf" 확장명으로 끝납니다. (이 확장명은 OpenType 글꼴 파일을 나타냅니다.) 
        그림 축소그림 확대
        OpenType 글꼴 파일
        그림 확대를 위해 클릭하시기 바랍니다
    9. fntcache.dat 파일을 다시 삭제합니다. (그러면 이 파일이 다시 만들어집니다.) 이렇게 하려면 명령 프롬프트에서 다음 명령을 입력한 다음 Enter 키를 누릅니다.
      del %windir%\system32\fntcache.dat
    10. 제어판에서 프로그램 및 기능 항목을 열고 설치된 업데이트 보기를 클릭합니다. 다음 중 현재 설치된 업데이트를 모두 찾아 제거합니다.
      • KB2982791
      • KB2970228
      • KB2975719
      • KB2975331
    11. 컴퓨터를 다시 시작합니다.
    12. 앞서 저장한 reg 파일을 찾고 이 파일을 마우스 오른쪽 단추로 클릭한 다음 병합을 클릭하여 이전에 제거한 글꼴 레지스트리 값을 복원합니다.

      참고 문제가 되는 업데이트가 제거되었으므로 해당 레지스트리 값을 안전하게 다시 추가할 수 있습니다. 

 

 

기술 자료: 2982791 - 마지막 검토: 2014년 8월 19일 화요일 - 수정: 3.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Windows Server 2012 R2 Datacenter
  • Windows Server 2012 R2 Standard
  • Windows Server 2012 R2 Essentials
  • Windows Server 2012 R2 Foundation
  • Windows 8.1 Enterprise
  • Windows 8.1 Pro
  • Windows 8.1
  • Windows RT 8.1
  • Windows Server 2012 Datacenter
  • Windows Server 2012 Standard
  • Windows Server 2012 Essentials
  • Windows Server 2012 Foundation
  • Windows 8 Enterprise
  • Windows 8 Pro
  • Windows 8
  • Windows RT
  • Windows Server 2008 R2 Service Pack 1 을(를) 다음과 함께 사용했을 때
    • Windows Server 2008 R2 Datacenter
    • Windows Server 2008 R2 Enterprise
    • Windows Server 2008 R2 Standard
    • Windows Web Server 2008 R2
    • Windows Server 2008 R2 Foundation
  • Windows 7 Service Pack 1 을(를) 다음과 함께 사용했을 때
    • Windows 7 Ultimate
    • Windows 7 Enterprise
    • Windows 7 Professional
    • Windows 7 Home Premium
    • Windows 7 Home Basic
    • Windows 7 Starter
  • Windows Server 2008 Service Pack 2 을(를) 다음과 함께 사용했을 때
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
    • Windows Server 2008 Foundation
    • Windows Server 2008 for Itanium-Based Systems
  • Windows Vista Service Pack 2 을(를) 다음과 함께 사용했을 때
    • Windows Vista Ultimate
    • Windows Vista Enterprise
    • Windows Vista Business
    • Windows Vista Home Premium
    • Windows Vista Home Basic
    • Windows Vista Starter
  • Microsoft Windows Server 2003 Service Pack 2 을(를) 다음과 함께 사용했을 때
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
키워드: 
atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2982791

 

 

아이네임즈 에서 도메인등록 때문에 이거저거 뒤져보다가 국내에서는 CMS(Content Management Systems)에 대한 정보를 알수 없을까 궁금하던 차에 여기저기 참조하기 좋은 사이트가 있어서 소개시켜드립니다.

 

사실 CMS라는 단어자체가 생소하던 차에 몇년전에 갑자기 서울시에 Wordpress로 사이트를 구축했다는 뉴스가 나오면서 관심있게 보면서 알게되었습니다. 워드프레스는 실제로 훨~씬전에 나오긴 했지만요~

 

사실 그전에 국내에는 몇가지의 CMS가 있었는데 점차 해외의 CMS도 늘고 있는 상황입니다.

 

그렇다면 실제로 국내에서는 어떤 CMS가 많이 쓰일까?

 

결론부터 말하자면 정확한 통계를 낼수는 없지만 단편적인 통계로 대략의 정보를 얻을 수 있습니다.

 

w3techs.com에 간단한 통계정보를 뽑아보았습니다. w3techs에서는 다른 통계 정보를 얻을 수 있습니다.
아래는 국내 ".kr"도메인을  사용하는 홈페이지 중에서 CMS의 점유율을 나타냅니다.

 


 

확실히 최근에 워드프레스가 인기가 있네요 눈여겨 볼 것은 KimsQ라는 것도 적지않은 비중을 차지하고 있네요  다만, 아쉬운 점은 그누보드가 빠져있어서 통계수치의 신뢰도가 다소 떨어지는 점입니다.

 

그렇다면 이번에는 구글트랜드를 통해서 몇가지의 CMS(워드프레서, 제로보드, 그누보드, 킴스큐)를 비교해보았습니다.


 

 

4가지의 CMS를 비교했을 때도 역시나 워드프레스가 가장 이슈가 되고 있습니다.

 

마지막으로 이번에는 네이버 트랜드를 통해서 4가지 CMS를 비교해보겠습니다.

 

 

네이버에서는 구글과 다르게 킴스큐를 제외하고 나머지 CMS는 비슷한 검색량을 나타내고 있습니다.

 

각자의 통계 산출의 기준이 다르고 수치도 다르게 나오니 무엇이 정확하다고 단정지을 수 없지만 한 가지 알 수 있는 것은 최근에 워드프레스가 점차 국내에서 관심이 높아지고 있다는 것입니다.

웹메일 서비스는 포털에서 제공하는 유료서비스와 전문 업체에서 제공하는 유료서비스가 있습니다.
(물론 무료로 서비스하는 곳도 있죠)
하지만 웹메일 서비스를 아웃룩에서 불러와 메일을 확인하고자 하는 분들도 계실겁니다.

특히 MS 아웃룩 중 Outlook 2013에 맞추어 설명을 드리겠습니다.

1. 먼저 아웃룩을 실행시킨 후 상단에서 [파일]을 클릭합니다.
   다시 [정보]-[계정 및 소셜 네트워크 설정]의 [계정 설정]을 클릭~

 

 

2. [계정 설정]을 클릭하면 팝업창이 나옵니다.
   '새로 만들기'를 선택합니다.

 

3. 새로운 창(계정추가)의 '전자메일 계정'을 선택한 후 '다음' 클릭~

 

 

4. 다음 창에서 ‘수동으로 서버 설정 또는 추가 서버 유형 구성’을 선택하고 다음을 클릭합니다.

 

5. '서비스 선택' 창에서‘POP 또는 IMAP’을 선택하고 다음을 클릭!!

 

 

6. [사용자정보] 에는 사용자이름, [전자메일주소]에는 메일 주소를
[받는 메일 서버]에는 [mail.도메인주소]을
[보내는 메일 서버]는 [mail.도메인주소]을 입력합니다.

[id@도메인주소] 계정이름에 입력해주셔야 인증이 됩니다.
(아래 ganada@ganada.co.kr은 예를 들어 설명드린 것 입니다.)
보내는 메일 서버를 사용하기 위한 설정을 추가합니다.

[기타설정] 버튼을 클릭~

 

 


7. [기타설정] 버튼을 클릭한 후 나오는 ‘인터넷 전자 메일 설정’ 창에서 보내는 메일 서버 탭을

선택하세요.
'보내는 메일 서버(SMTP)인증필요'를 체크한 후 로그온 정보를 선택 후
[사용자 이름]에는 이메일 주소, [암호] 웹메일 접속 시 로그인 암호를 입력 후 [확인] 버튼을 누르

세요.

 

 

'인터넷 전자 메일 설정’ 창에서 [확인] 버튼을 클릭하여 메일 계정 등록을 마칩니다.



일 잘하는 직장인을 위한 아웃룩+원노트 2010
국내도서
저자 : 오피스튜터
출판 : 정보문화사 2011.02.11
상세보기


이동디스크 계열의 경우 잦은 장치 제거로 인식불량의 상태에 이르게 될때도 부지기수이다

 

특히 블랙박스의 경우 저장중 잦은 강제종료등의 원인으로 (결국 따지고보면 블랙박스 제조업체의 문제인가...)

 

여하튼 메모리카드 먹통 해결방법~!

 

 

1 .윈도우키 + r 키 를 눌러 실행창을 열고~ (윈7 이라면 윈도우 아이콘 누르고 바로 보이는 검색창에서 검색해도 무방

 

diskpart 를 입력하고 실행~!

 

실행하면~ 도스 창이 열리고 만약 인식 불가 메모리카드가 꼽혀있다면 첫 로딩조차도 조금 시간이 걸릴것이다

 

참고 기다려준다...

 

 

2. 기다리면 아래에서 보는것처럼 DISKPART> 에서 커서가 깜박 거리고 있을것이다.

 

이때 list disk 입력 후 엔터~!

 

 

자신의 pc에 있는 저장장치의 목록이 나올것이다

 

이때 반드시 정확히 자신이 포맷을 목표로하는 디스크를 잘 판단해야한다

 

필자의 경우 120G ssd 가 달린 pc 에 문제의 32G 메모리카드만 꽂혀있는 상태

 

- 여기선 29GB로 표시된 디스크3

 

정말 어느건지 모르겟다 싶다면 해당 상황을 일단 촬영 혹은기록해두고 창을 닫는다.

 

이후 해당 장치 제거후 다시 위의 1번 과정을 재실행해서 비교 하여 디스크 번호를 정확히 인지 한다!!

 

4. 이제 해당 기기의 문제 상황을 해결해보자. 일단 해당 디스크를 선택 해야한다. (뭘 수정할지 이놈한테 알려주는거다)

 

select disk 디스크번호  

 

필자의 경우 disk 3 이 대상이므로 아래와같이 선택

 

선택후 해당 디스크 구조 정리~!! 복구불가하니 주의 (디스크에서 구성정보 또는 모든정보를 삭제하고 디스크를 닫는다).

 

clean 입력후 엔터

 

 

 

5. 이제 정리가 됬으니~ 다시 메모리카드를 활성화 해보자

 

아래의 내용처럼 3가지 명령을 차례대로 실행 해보자

 

Create partition primary

 

Active

 

Assign

 

위 3개의 명령을 실행 완료하면 마지막에 디스크 포맷 관련 실행 팝업이 뜬다.

 

 

 

 

포맷 완료 가 되었다면 문제는 해결!!

 

아래는 diskpart 에서 실행 가능한 명령 목록

 

 

 

 

http://dom.inames.co.kr/vsvcs/qrGen


출처 : (주)아이네임즈 , 도메인부가서비스 > QR코드


(주)아이네임즈 사이트가 전체 개편 되면서 큐알코드 만들기(생성기) 부가서비스가 추가 되었다.


큐알코드 생성기야 지금까지 여러군데에서 많이 제공 되는 서비스이긴 하지만


국내 다른 큐알코드 생성기와 조금 다른점은 생성된 큐알코드에 분류별 아이콘을 넣을수도 있고, 


안드로이드만 지원 가능하지만 와이파이 로그인 큐알코드를 생성할수 있다는 점이다.


( ios 에서는 앱에 와이파이 설정 권한을 보안상 막고있는 터라 관련 기능이 지원 되지 않는 상태다)


커피숖이나 펜션 놀러갔을때~ 혹은 서비스센터 방문시에 이런 큐알코드가 제공되면 무지 편할거 같다


굳이 카운터 가서 물어보지 않아도 되고~ 




하지만 사용 해본 결과 국내 관련 서비스가 제공되고 있지 않다보니~ 국내 큐알코드 리더기에서는 관련기능이 지원되고 있지 않았다.


즉 관련기능 사용을 위해서는 해외에서 만들어진 큐알코드 리더기(스캔앱) 을 사용해야만 한다.

아이네임즈에서도 관련 내용으로 QR code Reader 를 설치 해야한다고 안내 하고 있다.

구글 플레이스 스토어에서 검색하면 쉽게 내려받을수 있었다.



필요에 의해 기술은 발전되고 만들어지는 거니 머지 않아 이런 기능도 아이폰에서도 그리고 국내 큐알코드 리더기 에서도 쉽게 찾아 볼수 있는 날이 올거라 생각된다.



어찌됐든 이번에 오픈된 기능중에 아이콘으로 큐알코드가 어떤 내용을 담고 있는지 하단 문구 추가로도 덤으로 내용을 알수있어 제법 쓸만한 기능인듯 하다.




 

[아이네임즈 큐알코드 만들기 바로가기]



gTLD 가 무엇인고 하니~~

 

닷컴(.com) 이나 닷넷(.net) 같은 도메인 뒤에 적는 그런류의 애들이라고 하네요.

 

이런 도메인 후위에 붙는 점 하나 짜리 애들을 최상위 도메인 이라고 합니다.

 

즉 naver.co.kr 이런식의 도메인의 경우 최상위 도메인은 .kr 인거 같네요

 

2월 초에 단게적으로 몇몇개의 최상위 도메인이 오픈 된다고 하는데 이것에 대한 예약 등록을 받는다는 내용입니다.

 

(미리 도메인 결제 해두면 해당 날짜에 알아서 빠르게 등록신청!! - 등록은 선착순 이니까요;; )

 

 

 

아이네임즈 NEW gTLD 예약등록 페이지 : http://dom.inames.co.kr/tldReserves

 

 

 

livein.today 하나 살랬는데 가격이 좀 비싸서 패스;;; -_- ;;;;;담배2

 

 

 

최상위 도메인명이 회사명하고 연결 되는 경우에는 뭔가 단축된 느낌도 나고~ 메리트가 있어 보입니다~

앞부분 영문이 짧을수록 뒤에 오는 gTLD가 돋보이기도 하네요

 

 

뉴스투데이 news.today

커피구루나루 coffee.guru, gurunaru.coffee

대신카메라 daesin.camera

 

칼리무진 KAL.limo (usine 은 생략 느낌 )

x바이크 x.bike

 

콩글리쉬 조합

 

삼천리자전거 3000ri.bike (samchuly.co.kr 보단 외우기 쉬운듯 ㅋㅋ)

 

등등의 조합~

 

 

http://dom.inames.co.kr/tldReserveshttp://dom.inames.co.kr/tldReserves

 

http://dom.inames.co.kr/tldReserveshttp://dom.inames.co.kr/tldReserves

 

 

http://dom.inames.co.kr/tldReserveshttp://dom.inames.co.kr/tldReserves

 

보통 특정위치에 레이어 팝업을 띄우는경우

 

relative 레이어 로 사이트특정 포인트를 잡고 그안에 absolute 로 레이어를 띄우는경우가 많다.

 

하지만~ position 을 쓸경우~!

 

이를 프로그램화 해서 사용하느게 가능하다~]

 

예제 : http://jsfiddle.net/echos/26KQa/15/

 

 

즉, abosolute 만 쓴상태에서도 창크기에 상관없이 클릭요소의 position을  body 의 xy 좌표기준 현재 위치를 알아 낸다면 바로 그 위치에 원하는 레이어를 띄울수 있다~

 

 

 

간만에 포스팅!!


개발시 디버깅으로 크롬은 정말 너무 편해 이제 개발시에 익스로 디버깅하는게 너무 불편할 정도이다.


이번에 나온 익스 11이 제법 크롬을 따라 했지만;;; 그래도 아직은 먼듯 하다



간만에 포스팅이니 간단하게 ....




간단하게 쿠기 선택 삭제하기 


1. F12 를 눌러서 개발자 도구 를 열고 


2. Resources 탭을 클릭 한뒤~ Cookies 를 열면 아래와 같은 내용이 나온다~




3. Name 으로 삭제를 원하는 쿠키를 고르고 오른클릭 하면 메뉴가 나온다~


뭐 간단한 영어이니 다들 이해 하시겠지만;;


- Refresh : 새로고침

Delete : 선택한 쿠키 삭제

Clear all from ".특정도메인" : 특정도메인에서 구워진 쿠키 다 날리기

Clear all : 쿠기 다 날리기




 

 

 

http://www.ahnfund.kr/

 

안철수 국민펀드

 

 

 

 

 

 

 

애플 미디어 행사 초대장에 넣은 이미지

 

이 심플하면서 확 오는 느낌 애플답다~!

요즘 많이 사용하는 스마트폰 이나~ 패드~ 노트북에 이르기까지 많은 무선기기들이 많이 사용되고 있다.

 

근데 예상외로 연결이 안되는데 그 원인을 알수가 없다는 경우가 많다.

 

아주 단순한 원인임에도 불구하고~

 

 

 

1. 안테나 손상.

 

뭐 제목에서도 보다시피 기기의 안테나 손상의 경우를 들수있다.

 

기기내에서 주변 와이파이가 감지가 안되는경우.

 

충격이나 외부 자극에 의한 안테나 손상 문제일 가능성이 높다.

 

 

 

2. 공유기 무선랜 호환 모드 설정

 

예상외로 공유기 설정을 만지작 하다 설정하기도 하는데 잘 모른경우가 많아 공유기 초기화로 해결하는경우가 많은듯 하다.

 

EFM 네트워크 iptime 계열의 관리자 설정 에 무선 설정/보안  메뉴를 열어보면

 

모드 라는 옵션이 있는데...

 

도움말을 보면

 

---------------------------------------------------------------------------------------------

모드는 무선랜 카드와의 호환성을 설정합니다. (제품별로 지원할 수 있는 모드가 다를 수 있습니다.)

---------------------------------------------------------------------------------------------
11a/n 5GHz : 5GHz 대역의 11a/n 기반의 무선 호스트가 접속할 수 있습니다.
B,G,N : 802.11n/11b/11g 기반의 무선 호스트가 접속할 수 있습니다.
G,N : 802.11g/11n 기반의 무선 호스트가 접속할 수 있습니다.
N Only : 802.11n 기반의 무선 호스트만 접속할 수 있습니다.
G Only : 802.11g(54Mbps)기반의 무선 호스트만 접속할 수 있습니다.
G and B : 802.11g(54Mbps)와 802.11B(11Mbps)기반의 무선 호스트가 접속할 수 있습니다.
B Only : 802.11b(11Mbps) 기반의 무선 호스트만 접속할 수 있습니다.

---------------------------------------------------------------------------------------------

 

최근 나온 기기들의 경우 는 대부분 N 인경우가 대부분이지만

 

아이폰 3Gs 의 랜카드는 802.11g 표준 으로서 G 모드도  설정을 해줘야 접속이 가능하다.

 

혼자만 쓰는거면야 자신의 스마트폰에 맞게 설정하면 되지만 여러명이 같이쓰는 곳이라면 B G N 모두를 설정하는게 덜 귀찮을 듯 ~

 

 

 

3. 기타 접속불가

 

뭐 비밀번호틀린거라면 알아서 해결을 보시고;;

 

랜카드고장... 공유기 불량 등의 기기오류는 역시 a/s -_-b

 

주변에 많은 밀집된 주파수 사용으로 인한 통신 간섭 등에 의해 접속이 불안정하다거나 하다면....

 

전문가를 초빙하시던가 그게 힘드시다면 5GHz 주파수대를 사용하는 공유기가 판매되고있으니 (조금 고가 이긴 하지만) 간단하게 돈으로 서 해결이 가능하다... 속도나 거리의 장점이 있긴하다(역시 돈이 최고인가 ㅋ)

 

 

 

 

ps. kt쿡허브 쓰레기 인듯;; 인터넷전화때메 어쩔수없이 강매 당했지만....(모델이 쿡허브 전화밖에 없다니 어이없는 ㅋ) 쓰고있는데 아주 최악의 허브인듯;; 결국... 이글 작성하면서 5Ghz구매완료...

 

 

 

 

 

iOS SDK Release Notes for iOS 6 beta 4

Contents:

Introduction
Bug Reporting
Notes and Known Issues


Introduction

iOS SDK 6.0 provides support for developing iOS apps, and it includes the 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 6. You can also test your apps using the included iOS Simulator, which supports iOS 6. iOS SDK 6.0 requires a Mac computer running OS X 10.7.4 or higher (Lion).

This version of iOS is intended for installation only on devices registered with Apple’s 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

To report any bugs not mentioned in the “Notes and Known Issues” section, please use the Apple Bug Reporter on the Apple Developer website (http://developer.apple.com/bugreporter/). Additionally, you may discuss these issues and iOS SDK 6 in the Apple Developer Forums: http://devforums.apple.com. You can get more information about iCloud for Developers at http://developer.apple.com/icloud.

Notes and Known Issues

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

Accounts Framework

  • When requesting access to Facebook accounts, the only key required in your options dictionary is ACFacebookAppIdKey. ACFacebookPermissionGroupKey and ACFacebookAppVersionKey are now obsolete.

    If you request a write permission under ACFacebookPermissionsKey, such as publish_stream, you must provide a value for ACFacebookAudienceKey, which can be one of ACFacebookAudienceEveryone, ACFacebookAudienceFriends, or ACFacebookAudienceOnlyMe.

Address Book

  • FIXED: When an app is in a fresh privacy state and tries to present a 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.

  • Requesting access to contacts:

    • Users are able to grant or deny access to contact data on a per-app basis. To request access to contact data, call the ABAddressBookRequestAccessWithCompletion function after calling the ABAddressBookCreateWithOptions function. The 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 to ABAddressBookCreateWithOptions 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.

  • Checking access authorization status:

    • 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 of EKEventStore. For Assets Library, call the authorizationStatus class method of ALAssetsLibrary. The meaning of the status values that are returned is as follows:

      • Authorization Status Not Determined—The user has not yet made a choice regarding whether this app can access the data class.

      • Authorization Status Restricted—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.

      • Authorization Status Denied—The user explicitly denied access to the data class for this app.

      • Authorization Status Authorized—This app is authorized to access the data class.

Apple TV

  • FIXED: In some cases, the screen may show the wrong resolution. Restart your Apple TV to return it to the correct resolution.

  • FIXED: Apple TV may restart while using the Remote app.

  • FIXED: Apple TV may restart when changing the system language.

  • FIXED: Photo Stream does not load when logging in a second time. Restart Apple TV to resolve.

  • Music does not play during photo slideshows.

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

Bonjour

  • The NSNetService class and CFNetService APIs do not include P2P interfaces by default. To browse, register, or resolve services over P2P interfaces, an app needs to use the Bonjour DNSService*() APIs noted below.

  • Setting the interfaceIndex parameter to kDNSServiceInterfaceIndexAny in the following APIs will not include P2P interfaces by default. To include P2P interfaces, you must now set the kDNSServiceFlagsIncludeP2P flag when using kDNSServiceInterfaceIndexAny or set the interfaceIndex to kDNSServiceInterfaceIndexP2P. The affected APIs are:

    • DNSServiceBrowse

    • DNSServiceRegister

    • DNSServiceResolve

    • DNSServiceRegisterRecord

    • DNSServiceQueryRecord

Dictionary

  • FIXED: 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

  • Requesting access to calendars or reminders:

    • 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 the requestAccessToEntityType: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

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

  • The authenticate method of 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).

    • 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 address.

    • icloud.com email cannot be sent from www.icloud.com. Users should use http://beta.icloud.com at this time if they wish to use a web browser to send email from their icloud.com address.

    • @icloud.com addresses will be added within two weeks of first using iOS 6.

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

  • The setSortDescriptors: method of NSMetadataQuery is not supported.

  • In iOS 6, files that are protected via Data Protection cannot be used with iCloud Storage APIs.

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

    Additionally, when the file is conflicted, the iCloud daemon will not wait until it has all the conflict losers of the file available to make the file available to your app. It will make the different versions of the conflicted file available as soon as it can. Your app can use the existing file coordination and the UIDocument callbacks to be notified when the conflict losers have been downloaded and are available.

iTunes

  • iTunes 10.6.3 is required for iOS SDK 6.0.

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

Location

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.

    • API compatibility will be maintained (see known issues below).

    • Maps are now supported in Simulator.

    • Map data will continue to evolve—only a limited amount of high-resolution satellite imagery is currently available.

  • Routing apps that do not specify a coverage file during development will always be displayed in the Maps routing search results.

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

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

Newsstand

  • FIXED: 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 when using a webServiceURL when ingesting a pass.

  • FIXED: Unable to show boarding passes on lock screen.

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

  • The contents of the userInfo dictionary for PKPassLibraryDidChangeNotification have changed in the case of removed passes. Please consult the latest documentation for the new userInfo dictionary.

Security

  • In iOS 5, signing a certificate with an MD5 signature is not supported. Please ensure that certificates use signature algorithms based on SHA1 or SHA2.

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

    • Users will see access dialogs when an app tries to access any of those data types. The user can switch access on and off in Settings > Privacy.

    • 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 -”.

    • There are changes to the Event Kit and Address Book frameworks to help developers with this feature.

Simulator

  • FIXED: The app delete confirmation alert panel takes a while to show up in 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.

Shared Photo Stream

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

  • The Shared Photo Stream feature is set to OFF when updating from iOS 6 beta 1 to a later release. The default setting should be ON.

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

Social

  • Weibo shows up in the Settings app only if a Chinese keyboard is enabled.

  • The requestAccessToAccountsWithType:withCompletionHandler: method of ACAccountStore is now deprecated. To access user accounts, please use the requestAccessToAccountsWithType:options:completion: method.

    In the options parameter of this new method, pass nil to access Twitter and Weibo accounts. To access Facebook accounts, pass a dictionary with the following keys (which are documented in ACAccountStore.h):

    You should no longer add this dictionary to your app’s Info.plist file, as was required in beta 1.

  • When requesting access to Facebook accounts, the only key required in your options dictionary is ACFacebookAppIdKey. ACFacebookPermissionGroupKey and ACFacebookAppVersionKey are now obsolete.

    If you request a write permission under ACFacebookPermissionsKey—such as publish_stream—you must provide a value for ACFacebookAudienceKey, which can be one of ACFacebookAudienceEveryone, ACFacebookAudienceFriends, or ACFacebookAudienceOnlyMe.

Status Bar

  • 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 key).

UIKit

  • In iOS 5.1, the 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 property of your split view controller to NO disables the gesture. However, disabling the gesture is discouraged because its use preserves a consistent user experience across all apps.

  • FIXED: 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 objects.

  • In iOS 6 and later, the UIWebView class paints its contents asynchronously.

  • Autorotation is changing in iOS 6. In iOS 6, the shouldAutorotateToInterfaceOrientation: method of UIViewController is deprecated. In its place, you should use the supportedInterfaceOrientationsForWindow: and shouldAutorotate methods.

    • More responsibility is moving to the app and the app delegate. Now, iOS containers (such as UINavigationController) do not consult their children to determine whether they should autorotate. By default, an app and a view controller’s supported interface orientations are set to UIInterfaceOrientationMaskAll for the iPad idiom and UIInterfaceOrientationMaskAllButUpsideDown for the iPhone idiom.

    • 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 from its shouldAutorotate method. The system intersects the view controller’s supported orientations with the app’s supported orientations (as determined by the Info.plist file or the app delegate’s application:supportedInterfaceOrientationsForWindow: method) to determine whether to rotate.

    • The system determines whether an orientation is supported by intersecting the value returned by the app’s supportedInterfaceOrientationsForWindow: method with the value returned by the supportedInterfaceOrientations method of the top-most full-screen controller.

    • The 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. This puts the responsibility of ensuring that the status bar orientation is consistent into the hands of the caller.

    • For compatibility, view controllers that still implement the shouldAutorotateToInterfaceOrientation: method do not get the new autorotation behaviors. (In other words, they do not fall back to using the app, app delegate, or Info.plist file to determine the supported orientations.) Instead, the shouldAutorotateToInterfaceOrientation: method is used to synthesize the information that would be returned by the supportedInterfaceOrientations method.

  • The willRotateToInterfaceOrientation:duration:, willAnimateRotationToInterfaceOrientation:duration:, and 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:.

    • You should make sure that your apps are not using these methods to manage the layout of any subviews. Instead, they should use the view controller’s viewWillLayoutSubviews method and adjust the layout using the view’s bounds rectangle.

  • In iOS 6, the viewWillUnload and viewDidUnload methods of UIViewController are now deprecated. If you were using these methods to release data, use the didReceiveMemoryWarning method instead. You can also use this method to release references to the view controller’s view if it is not being used. You would need to test that the view is not in a window before doing this.

  • It is unsupported to set values for the shadowOffset or shadowColor properties of a UILabel object if its attributedText property contains a valid attributed string. Instead, use the NSShadowAttributeName attribute of the attributed string to set the shadow.

  • Due to compatibility concerns, the NSBaselineOffsetAttributeName attribute is no longer supported in iOS 6.

  • The NSTextAlignmentNatural value is unsupported and will throw an exception when used with the textAlignment property of UILabel or supplied as the alignment parameter to the drawInRect:withFont:lineBreakMode:alignment: method of NSString.

  • The setContentStretch: method of UIView has been deprecated in this beta release. To achieve the same effect, use the resizableImageWithCapInsets: method of UIImage and display the image with a UIImageView.

  • The resizableImageWithCapInsets: method of 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: method allows the caller to specify a tiling or stretching resizing mode.

  • The UICollectionViewLayout class has changed:

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

    • The class has changed some method names. Specifically, decoration views are no longer referred to by “reuse identifier” but rather by “element kind.” Apps that are using decoration views will need to modify their code and rebuild to accommodate this.

  • 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) and UILayoutAttributeBaseline 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.

  • Apps with table views in their nib or storyboard files, and that were built using previous versions of iOS 6 beta, will require a clean build with beta 3 and newer.

  • Here are some notes regarding auto layout support for UIScrollView:

    • In general, auto layout considers the top, left, bottom, and right edges of a view to be the visible 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 not change the position of the view.

    • The 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 edges within a scroll view now mean the edges of its content view.

    • The constraints on the subviews of the scroll view must result in a size to fill, which is then interpreted as the content size of the scroll view. (This should not be confused with the 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 outside of its subtree.

    • Note that you can make a subview of the scroll view appear to float (not scroll) over the other scrolling content by creating constraints between the view and a view outside the scroll view’s subtree, such as the scroll view’s superview.

    • Here are some examples of how to configure the scroll view:

      • Mixed approach:

        1. Position and size your scroll view with constraints external to the scroll view—that is, the translatesAutoresizingMaskIntoConstraints property is set to NO.

        2. Create a plain UIView content view for your scroll view that will be the size that you want your content to have. Make it a subview of the scroll view but let it continue to translate the autoresizing mask into constraints:

          UIView *contentView = [[UIView alloc]
              initWithFrame:CGRectMake(0,0,contentWidth,contentHeight)];
          [scrollView addSubview:contentView];
          // DON'T change contentView's translatesAutoresizingMaskIntoConstraints,
          // which defaults to YES;
        3. Set the content size of the scroll view to match the size of the content view:

          [scrollView setContentSize:CGMakeSize(contentWidth,contentHeight)];
        4. Create the views you want to put inside the content view and configure their constraints so as to position them within the content view.

          Alternatively, you can create a view subtree to go in the scroll view, set up your constraints, and call the systemLayoutSizeFittingSize: method (with the UILayoutFittingCompressedSize option) to find the size you want to use for your content view and the contentSize property of the scroll view.

      • Pure auto layout approach:

        1. In this case, translatesAutoresizingMaskIntoConstraints must be set to NO on all views involved.

        2. Position and size your scroll view with constraints external to the scroll view.

        3. Use constraints to lay out the subviews within the scroll view, being sure that the constraints tie to all four edges of the scroll view and do not rely on the scroll view to get their size.

          A simple example would be a large image view, which has an intrinsic content size derived from the size of the image. In the viewDidLoad method of your view controller, you would include code like the following:

          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]];

          This would give you a scroll view that resized as the view controller’s view resized (such as on device rotation), and the image view would be a scrolling subview. You don't have to set the content size of the scroll view.

  • 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 and the OtherFixedHeightView were off by one pixel and the developer could do nothing about it. This issue is now fixed.

    • 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 integer 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.

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

Safari and WebKit

  • WebKit on iOS now supports the requestAnimationFrame and cancelAnimationFrame methods in JavaScript, as described here: http://www.w3.org/TR/animation-timing/.

    • Note that because the specification is still at the Working Draft state, these methods have the webkit prefix, so they are window.webkitRequestAnimationFrame and window.webkitCancelAnimationFrame.

  • The default app cache quota has increased from 5 MB to 25 MB.

  • 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).

  • Support has been added for <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.

  • With Safari 6.0 on OS X, developers can now use the Web Inspector (web development tool) with attached iOS devices and iOS Simulator. Developers can use the Web Inspector to debug Safari and the UIWebView class in their own apps built and run from Xcode. This replaces the Debug Console banner in Safari.

  • In iOS 6 and later, web data (SQL Web Storage and LocalStorage) from a UIWebView object can be stored in a directory that will be backed up. To enable backing up this data, set the WebKitStoreWebDataForBackup key to YES in your app’s user defaults. This should be done only if your app relies on web content data that cannot be reloaded. If your UIWebView object opens links to arbitrary web content, this key should be set to NO. Toggling the value of this key will not preserve existing web view data.

  • In iOS 6 and later, Safari no longer registers for the common feed: RSS/ATOM scheme. Apps that can view those types of feeds are encouraged to register for that URL scheme.

  • WebKit no longer always creates hardware-accelerated layers for elements with the -webkit-transform: preserve-3d option. Authors should stop using this option as a way to get hardware acceleration.

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

  • As of iOS 6, embedded YouTube URLs in the form of https://www.youtube.com/watch?v=oHg5SJYRHA0 will no longer work. These URLs are for viewing the video on the YouTube site, not for embedding in web pages. Instead, the format that should be used is described here: https://developers.google.com/youtube/player_parameters.

  • In iOS 6, the 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.

iOS SDK Release Notes for iOS 6 beta 3

Contents:

Introduction
Bug Reporting
Notes and Known Issues


Introduction

iOS SDK 6.0 provides support for developing iOS apps and includes the 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 that run on iPhone, iPad, or iPod touch running iOS 6. You can also test your apps using the included iOS Simulator, which supports iOS 6. iOS SDK 6.0 requires a Macintosh computer running OS X 10.7.4 or higher (Lion).

This version of iOS is intended only for installation on devices registered with Apple's 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

Please report any bugs not mentioned in the “Notes and Known Issues” section using the Apple Bug Reporter on the Apple Developer website (http://developer.apple.com/bugreporter/). Additionally, you may discuss these issues and iOS SDK 6 in the Apple Developer Forums: http://devforums.apple.com. You can get more information about iCloud for Developers at: http://developer.apple.com/icloud

Notes and Known Issues

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

Address Book

  • When an app is in a fresh privacy state and tries to present a ABNewPersonViewController, the user cannot dismiss that view controller properly even if they allow access to contacts. The user must force quit the app and relaunch.

  • Requesting access to contacts:

    • Users are able to grant or deny access to contact data on a per-app basis. To request access to contact data, call the ABAddressBookRequestAccessWithCompletion function after calling the ABAddressBookCreateWithOptions function. The 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 to ABAddressBookCreateWithOptions 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.

  • Checking access authorization status:

    • An app can use the authorization status API to check if it can access contacts, calendars, reminders or photo library. This API is independent from the 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 of EKEventStore. For Assets Library, call the authorizationStatus class method of ALAssetsLibrary. The meaning of the status values that are returned is as follows:

      • Authorization Status Not Determined - The user has not yet made a choice regarding whether this app can access the data class.

      • Authorization Status Restricted - 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.

      • Authorization Status Denied - The user explicitly denied access to the data class for this app.

      • Authorization Status Authorized - This app is authorized to access the data class.

Apple TV

  • In some cases, the screen may show the wrong resolution. Restart your Apple TV to return it to the correct resolution.

  • FIXED: Netflix videos may not resume where you left off.

  • FIXED: The History list in the YouTube app gets cleared when you exit and reenter the app.

  • Apple TV may be slow to respond while a download is in progress in the background.

  • Apple TV may restart while using the Remote app.

  • Apple TV may restart when changing the system language.

  • Photo Stream does not load when logging in a second time. Restart Apple TV to resolve.

  • Music does not play during photo slideshows.

  • New Behaviors:

    • Pick remote speakers in Settings > AirPlay.

    • Set an onscreen code for AirPlay in Settings > AirPlay.

    • Save multiple iTunes Store accounts in Settings > iTunes Store.

    • Press and hold the Select button to rearrange icons on the main menu.

    • Hide the main menu icons in Settings > General > Parental Controls.

Bonjour

  • The NSNetService class and CFNetService APIs do not include P2P interfaces by default. To browse, register, or resolve services over P2P interfaces, an app needs to use the Bonjour DNSService*() APIs noted below.

  • Setting the interfaceIndex parameter to kDNSServiceInterfaceIndexAny in the following API's will not include P2P interfaces by default. To include P2P interfaces, you must now set the kDNSServiceFlagsIncludeP2P flag when using kDNSServiceInterfaceIndexAny or set the interfaceIndex to kDNSServiceInterfaceIndexP2P. The affected APIs are:

    • DNSServiceBrowse

    • DNSServiceRegister

    • DNSServiceResolve

    • DNSServiceRegisterRecord

    • DNSServiceQueryRecord

Dictionary

  • 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 presented with 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 in order to dismiss the download request.

Event Kit

  • Requesting access to calendars or reminders:

    • 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 the requestAccessToEntityType: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 only be prompted 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

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

  • The authenticate method of GKLocalPlayer has been removed. Authentication will automatically commence when the completion handler is set.

iCloud

  • When creating an iCloud account, you can use any email based Apple ID, or you can use your existing iCloud account. If you had a MobileMe account that you have not yet moved to iCloud, you must move it first by visiting http://me.com. Moving to iCloud is only available for a limited time. Logging into a MobileMe account is not supported in iOS 6.

    • 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 will receive an @icloud.com email address that matches their @me.com address.

    • icloud.com email cannot be sent from www.icloud.com. Users should use http://beta.icloud.com at this time if they wish to send email from their icloud.com address using a web browser.

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

  • The setSortDescriptors: method of NSMetadataQuery is not supported.

  • In iOS 6, files that are protected via Data Protection cannot be used with iCloud Storage APIs.

  • File names are case-insensitive in OS X but case-sensitive in iOS. This can lead to problems when sharing files between the two platforms using iCloud. You should take steps on iOS to avoid creating files whose names 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.

    Starting in 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.

    Additionally, when the file is conflicted, the iCloud daemon will not wait until it has all the conflict losers of the file available to make the file available to your app. It will make the different versions of the conflicted file available as soon as it can. Your app can use the existing file coordination and the UIDocument callbacks to be notified when the conflict losers have been downloaded and are available.

iMessage & FaceTime

  • FIXED: The Answer and Decline buttons are missing when receiving calls in landscape orientations.

iTunes

  • iTunes 10.6.3 is required for iOS SDK 6.0.

  • FIXED: When restoring from an iTunes backup, the device intermittently shows up as a new device after rebooting. If that happens, set up the device as a “new device” when prompted to restore for the 2nd time. All data should have been restored correctly but sync settings including App arrangement in iTunes are lost.

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.

    • API compatibility will be maintained (see known issues below).

    • Maps are now supported in the Simulator.

    • Map data will continue to evolve—only a limited amount of high resolution satellite imagery is currently available.

  • FIXED: If Maps is not running in the background, a "Maps cannot connect to the internet" error is displayed when it is launched from a 3rd party app.

  • FIXED: If Maps has not yet been launched, the current location does not show up when it is launched from a 3rd-party app.

  • Routing apps that do not specify a coverage file during development will always be displayed in the Maps routing search results.

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

  • Maps does not zoom into the current location when launched from a 3rd party app.

Newsstand

  • Only simple http downloads will work with Newsstand.

Passbook

  • FIXED: An airplane icon appears between the origin and destination for all transit types.

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

  • FIXED: The Passbook database has been reset. You’ll need to add your passes again.

  • Passbook in the simulator no longer requires https/ssl when using a webServiceURL when ingesting a pass.

  • Unable to show boarding passes on lock screen.

Reminders

  • FIXED: There are issues when adding and editing reminders in the Reminders app on iPhone devices:

    • The Done button is missing when adding a new reminder.

    • The app crashes when you tap the Edit button to edit a reminder.

Security

  • In iOS 5, signing a certificate with an MD5 signature is not supported. Please ensure that certificates use signature algorithms based on SHA1 or SHA2.

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

    • Users will see access dialogs when an app tries to access any of those data types. The user can switch access on and off in Settings > Privacy.

    • 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, in the Info tab. The relevant key names begin with the string "Privacy -".

    • There are changes to the Event Kit and Address Book frameworks to help developers with this feature.

Simulator

  • The app delete confirmation alert panel takes a while to show up in iOS Simulator.

  • FIXED: Tapping the buy button in the view of an SKStoreProductViewController object in iOS Simulator causes the app to crash.

  • 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 the Simulator, you will hear a popping sound instead.

  • FIXED: Using the iOS 5.1 SDK with the iPad (Retina) profile will result in a SpringBoard crash. The iOS 5.1 SDK works with all other profiles and the iPad (Retina) SDK works with the iOS 6.0 SDK.

  • FIXED: Ads of type ADAdTypeMediumRectangle do not appear in iPad Simulator.

Shared Photo Stream

  • User 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 their iCloud email address or they will not receive the invitation.

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

  • The Shared Photo Stream feature is set to OFF when updating from iOS 6 beta 1 to a later release. The default setting should be ON.

  • Turning off Shared Photo Streams may leave camera in an unresponsive state, force quitting camera will resolve this issue.

Social

  • Weibo shows up in the Settings app only if a Chinese keyboard is enabled.

  • The requestAccessToAccountsWithType:withCompletionHandler: method of ACAccountStore is now deprecated. To access user accounts, please use the requestAccessToAccountsWithType:options:completion: method.

    In the options parameter of this new method, pass nil to access Twitter and Weibo accounts. To access Facebook accounts, pass a dictionary with the following keys (which are documented in ACAccountStore.h):

    • ACFacebookAppIdKey

    • ACFacebookPermissionsKey

    • ACFacebookPermissionGroupKey

    You should no longer add this dictionary to your app's Info.plist file, as was required in beta 1.

SpringBoard

  • FIXED: After restoring a device in iTunes or performing an "Erase All Contents and Settings", the current wallpaper may not appear until the device is rebooted once.

Status Bar

  • 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 the navigation bar color of your app 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 time. Inside the dictionary should be the UINavigationBar key, whose value is also a dictionary. That dictionary contains the initial navigation bar's style (with the Style key) and whether it's 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 key).

UIKit

  • In iOS 5.1, the UISplitViewController class adopts the sliding presentation style when presenting the left view (previously only seen 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 API, 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 property of your split view controller to NO disables the gesture. However, disabling the gesture is discouraged because its use preserves a consistent user experience across all apps.

  • FIXED: 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, in an effort to make them work well with the UIControl objects.

  • In iOS 6 and later, the UIWebView class paints its contents asynchronously.

  • FIXED: Developers trying out Auto Layout with UIScrollView objects might notice jitters in the scroll indicators on devices with Retina displays.

  • Autorotation is changing in iOS 6. In iOS 6, the shouldAutorotateToInterfaceOrientation: method of UIViewController is deprecated. In its place, you should use the supportedInterfaceOrientations and shouldAutorotate methods.

    • More responsibility is moving to the app and the app delegate. Now, iOS containers (such as UINavigationController) do not consult their children to determine whether they should autorotate. By default, an app and a view controller’s supported interface orientations are set to UIInterfaceOrientationMaskAll for the iPad idiom and UIInterfaceOrientationMaskAllButUpsideDown for the iPhone idiom.

    • 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 both the topmost 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 from its shouldAutorotate method. The system intersects the view controller’s supported orientations with the app's supported orientations (as determined by the Info.plist file or the app delegate's application:supportedInterfaceOrientationsForWindow: method) to determine whether to rotate.

    • The system determines if an orientation is supported by intersecting the value returned by the app’s supportedInterfaceOrientationsForWindow: method with the value returned by the supportedInterfaceOrientations method of the topmost fullscreen controller.

    • The setStatusBarOrientation:animated: method is not deprecated outright. However it now works only if the supportedInterfaceOrientations method of the topmost full screen view controller returns 0. This puts the responsibility of ensuring that the status bar orientation is consistent into the hands of the caller.

    • For compatibility, view controllers that still implement the shouldAutorotateToInterfaceOrientation: method do not get the new autorotation behaviors. (In other words, they do not fall back to using the app, app delegate, or Info.plist file to determine the supported orientations.) Instead, the shouldAutorotateToInterfaceOrientation: method used to synthesize the information that would be returned by the supportedInterfaceOrientations method.

  • FIXED: In certain situations, the Auto Layout system might not engage automatically for a view. To workaround this problem, override the requiresConstraintBasedLayout class method in your view and return YES from your implementation.

  • The willRotateToInterfaceOrientation:duration:, willAnimateRotationToInterfaceOrientation:duration:, and 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:.

    • You should make sure that your apps are not using these methods to manage the layout of any subviews. Instead, they should use the view controller’s viewWillLayoutSubviews method and adjust the layout using the view’s bounds rectangle.

  • In iOS 6, the viewWillUnload and viewDidUnload methods of UIViewController are now deprecated. If you were using these methods to release data, use the didReceiveMemoryWarning method instead. You can also use this method to release references to the view controller’s view if it is not being used. You would need to test that the view is not in a window before doing this.

  • FIXED: Calling any of the attributed string drawing methods without specifying a value for the NSFontAttributeName attribute is likely to throw an exception. The workaround is to set a value for the NSFontAttributeName key before drawing or sizing an NSAttributedString object.

  • Setting values for the shadowOffset or shadowColor properties of a UILabel object, whose attributedText property contains a valid attributed string, is unsupported. Use the NSShadowAttributeName attribute of the attributed string to set the shadow instead.

  • Due to compatibility concerns, the NSBaselineOffsetAttributeName attribute is no longer supported in iOS 6.

  • The NSTextAlignmentNatural value is unsupported and will throw an exception when used with the textAlignment property of UILabel or supplied as the alignment parameter to the drawInRect:withFont:lineBreakMode:alignment: method of NSString.

  • The setContentStretch: method of UIView has been deprecated in this beta release. To achieve the same effect, use the resizableImageWithCapInsets: method of UIImage and display the image with a UIImageView.

  • The resizableImageWithCapInsets: method of 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, like when a single column or row is being stretched. But in certain circumstances, one might want to actually stretch some region of an image. In iOS 6, the resizableImageWithCapInsets:resizingMode: method allows the caller to specify a tiling or stretching resizing mode.

  • The UICollectionViewLayout class has changed:

    • 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 that the same hooks can be used for rotations as well as for insertions and deletions.

    • The class has changed some method names. Specifically, decoration views are no longer referred to by "reuse identifier" but rather by "element kind." Apps that are using decoration views will need to modify their code and rebuild to accommodate this.

  • FIXED: In iOS 6, a bug was fixed where UIWebView.isLoading was set to NO before the main frame finished loading. Now, UIWebView.isLoading is set to NO when the main frame is done loading.

  • 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), and UILayoutAttributeBaseline 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.

  • Apps with table views in their nib or storyboard files, and that were built using previous versions of iOS 6 beta, will require a clean build with beta 3 and newer.

  • Here are some notes regarding auto layout support for UIScrollView:

    • In general, auto layout considers the top, left, bottom, and right edges of a view to be the visible 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 not change the position of the view.

    • The 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 edges within a scroll view now mean the edges of its content view.

    • The constraints on the subviews of the scroll view must result in a size to fill, which is then interpreted as the content size of the scroll view. (This should not be confused with the 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 outside of its subtree.

    • Note that you can make a subview of the scroll view appear to float (not scroll) over the other scrolling content by creating constraints between the view and a view outside the scroll view's subtree, such as the scroll view's superview.

    • Here are some examples of how to configure the scroll view:

      • Mixed approach:

        1. Position and size your scroll view with constraints external to the scroll view—that is, the translatesAutoresizingMaskIntoConstraints property is set to NO.

        2. Create a plain UIView content view for your scroll view that will be the size that you want your content to have. Make it a subview of the scroll view but let it continue to translate the autoresizing mask into constraints:

          UIView *contentView = [[UIView alloc]
              initWithFrame:CGRectMake(0,0,contentWidth,contentHeight)];
          [scrollView addSubview:contentView];
          // DON'T change contentView's translatesAutoresizingMaskIntoConstraints,
          // which defaults to YES;
        3. Set the content size of the scroll view to match the size of the content view:

          [scrollView setContentSize:CGMakeSize(contentWidth,contentHeight)];
        4. Create the views you want to put inside the content view and configure their constraints so as to position them within the content view.

          Alternatively, you can create a view subtree to go in the scroll view, set up your constraints, and call the systemLayoutSizeFittingSize: method (with the UILayoutFittingCompressedSize option) to find the size you want to use for your content view's size and the contentSize property of the scroll view.

      • Pure auto layout approach:

        1. In this case translatesAutoresizingMaskIntoConstraints must be set to NO on all views involved.

        2. Position and size your scroll view with constraints external to the scroll view.

        3. Use constraints to lay out the subviews within the scroll view, being sure that the constraints tie to all four edges of the scroll view and do not rely on the scroll view to get their size.

          A simple example would be a large image view, which has an intrinsic content size derived from the size of the image. In the viewDidLoad method of your view controller, you would include code like the following:

          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]];

          This would give you a scroll view that resized as the view controller's view resized (such as on device rotation), and the image view would be a scrolling subview. You don't have to set the content size of the scroll view.

Safari & WebKit

  • WebKit on iOS now supports the requestAnimationFrame and cancelAnimationFrame methods in JavaScript, as described here http://www.w3.org/TR/animation-timing/.

    • Note that because the specification is still at the Working Draft state, these methods have the webkit prefix, so they are window.webkitRequestAnimationFrame, window.webkitCancelAnimationFrame.

  • The default app cache quota has been increased from 5MB to 25MB.

  • The JPEG subsampling threshold was increased from 2 MP (megapixels) to 5 MP on all supported hardware except iPhone 3GS and iPod touch (4th gen).

  • Support has been added for <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.

  • With Safari 6.0 on OS X, developers can now use the Web Inspector (web development tool) with attached iOS devices and iOS Simulator. Developers can use the Web Inspector to debug Safari and the UIWebView class in their own apps built and run from Xcode. This replaces the Debug Console banner in Safari.

  • In iOS 6 and later, web data (SQL Web Storage and LocalStorage) from a UIWebView object can be stored in a directory that will be backed up. To enable backing up this data, set the WebKitStoreWebDataForBackup key to YES in your app’s user defaults. This should be done only if your app relies on web content data that cannot be reloaded. If your UIWebView object opens links to arbitrary web content, this key should be set to NO. Toggling the value of this key will not preserve existing web view data.

  • In iOS 6 and later, Safari no longer registers for the common feed: RSS/ATOM scheme. Apps that can view those types of feeds are encouraged to register for that URL scheme.

  • WebKit no longer always creates hardware-accelerated layers for elements with the -webkit-transform: preserve-3d option. Authors should stop using this option as a way to get hardware acceleration.

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

  • As of iOS 6, embedded YouTube URLs in the form of https://www.youtube.com/watch?v=oHg5SJYRHA0 will no longer work. These URLs are for viewing the video on the YouTube site, not for embedding in web pages. Instead, the format that should be used is described in https://developers.google.com/youtube/player_parameters.

  • In iOS 6, the 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 automatically bring up the keyboard.

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


 

 

 

최근 미국 연방수사국(FBI)에서는 DNS 설정을 변경하는 DNS 체인저 악성코드에 감염된 PC가 접속하던 DNS 서버 대신, 한시적으로 운영해 왔던 Clean DNS 서버의 운영을 2012년 7월 9일부로 중단하기로 하였습니다. 따라서 DNS 체인저 악성코드에 감염된 PC는 2012년 7월 9일 이후 인터넷 접속 장애가 발생할 수 있습니다. 국내 인터넷 이용자는 해당 악성코드에 감염되어 DNS 설정이 변경되었는지 확인이 필요합니다.

 

<확인방법>

  • DNS 체인저 악성코드 감염여부 확인 하기 : http://www.dns-ok.us
    사이트 접속시 초록색으로 보일 시 안전, 빨간색이면 해당 악성코드에 감염 되었으므로 아래 조치절차(전용백신 치료 및 DNS설정 정상화) 실시
    확인방법

<조치방법>

  1. KISA DNS체인저 악성코드 맞춤형 전용백신 다운로드 및 실행

    전용백신 다운로드 제공 페이지
    ※ 백신으로 악성코드를 치료 후, DNS 설정이 정상화되지 않으므로 아래 DNS설정 정상화 조치 필요함


  2. DNS 설정 정상화

    위 확인방법을 통해 사이트 접속시, 빨간색으로 표시된 이용자에 한해 설정을 변경하시기 바랍니다.
  • 윈도우7
    윈도우 시작 버튼 -> 제어판 -> 네트워크 및 인터넷 -> 네트워크 및 공유센터 -> 어댑터 설정 변경 -> 로컬 영역 연결 더블클릭 -> 속성 클릭 -> Internet Protocol Version 4 (TCP/IPv4) 클릭 후 속성 -> DNS 주소 변경(자동으로 받기 또는 기존에 사용 중인 IP로 변경)
    ※ 일반적으로 가정용 인터넷 회선을 사용하시면, 자동으로 받기로 설정하시면 됩니다.
    ※ 이용자 중 수동으로 DNS주소를 설정하고자 하는 분은, 현재 가입중인 인터넷 회선 업체에서 제공하는 기본/보조 DNS 주소로 변경바랍니다. (아래 표 참고)

  • 윈도우XP
    윈도우 시작 버튼 -> 설정 -> 제어판 -> 네트워크 연결 -> 로컬 영역 연결 더블 클릭 -> 속성 -> 인터넷 프로토콜(TCP/IP) 클릭 후 속성 -> DNS 주소 변경(자동으로 받기 또는 기존에 사용 중인 IP로 변경)
    ※ 일반적으로 가정용 인터넷 회선을 사용하시면, 자동으로 받기로 설정하시면 됩니다.
    ※ 이용자 중 수동으로 DNS주소를 설정하고자 하는 분은, 현재 가입중인 인터넷 회선 업체에서 제공하는 기본/보조 DNS 주소로 변경바랍니다. (아래 표 참고)

    구 분 기본 DNS 주소 보조 DNS 주소 문의 연락처
    KT olleh(구 QOOK) 168.126.63.1 168.126.63.2 ☎ 100
    SK 브로드밴드 210.220.163.82 219.250.36.130 ☎ 106
    LG U+(구 XPEED 파워콤) 164.124.101.2 203.248.252.2 ☎ 1644-7000
    구글 Public DNS 8.8.8.8 8.8.4.4 -

출처 : KISA 보호나라 (http://www.boho.or.kr/kor/notice/noticeView.jsp?p_bulletin_writing_sequence=960)

 

몇일전 기사를 보고 애플 지도상에서 의 독도를 검색해봤더니;;

 

역시나 기사대로 였다;;

 

자세한 항의 방법이나 문제 제기 방법에 대한 내용이 안보이는 터라~

 

혼자 해보고 맞는 방법이다 싶어 이렇게 약소하나마 적어본다~

 

1. 우선 애플 지도에서 검색을 합니다 . 기분나쁘지만 일단 검색어를    竹島

    검색된 위치에서   竹島 >  를 터치 합니다.

 

 

 

 

2. 검색된 내용에 대한 위치 정보 및 기본 정보를 보여주는데요. 이 부분에 하단부분에 보면 문제 리포트 가 있습니다.

문제제기를 바로 이곳에서 할수있겠습니다.!! 바로 문제 리포트 터치

 

 

 

 

 

3. 어떤 문제에 대한 리포트를 할것인지를 선택하게 되어있습니다.

우리는 타케시마라는 표시가 잘못되있다는걸 문제 리포트 할것이니~

 

정보가 올바르지 않음 을 터치 한 후에 다음을 터치 합니다.

 

 

 

 

4.  Suggest corrections below ~ (아래에서 수정 내용을  제안 하라고 합니다, 즉 수정 한뒤 보내기 를 터치하란 소리~)

 

수정할 부분인

 

name 부분을 터치 후 Dokdo

 

하는김에 주소도 완벽하게 address 터치 후 Dokdo-ri, Ulleung-eup, Ulleung-gun, Gyeongbuk, Korea 를 입력

 

그리고 맨 아래에 url 을 외교통상부 독도 주소를 적어주면 좋을듯 해서 ~  http://dokdo.mofat.go.kr/ 로 수정~

 

(아이폰/아이패드시라면 제 블로그 모바일로 직접 접속후에 복사하시길 추천)

 

수정후에 오른쪽위에 보내기 터치 하시면 완료~!! (해보니 여러번해도 가능한듯 해보입니다~)

 

 

 

 

ps. 왜 한글로 독도 가 아닌 Dokdo 냐 하시는분이 있을까 싶어 ~

 

일단 한국어 아는사람중에 독도가 우리땅인거 모른 사람은 없을꺼라고 보이는게 그 이유구요 한글로 독도 이렇게 리포트하시는거야 뭐 하시는분 맘이겠죠 ㅎㅎ

 

저번에 컬투쇼에서 들어보니 독도 표기가 반크 외에 다른 지식인분들 활동 전에 5% 였고 활동 후에 겨우 30% 이게 현실이라고 하네요~

 

국력도 물론 중요하지만 우리 같은 애플 디바이스 사용자인 국민으로도 이 정도 별로 어렵지않은 문제리포트~ 할수 있으리라 봅니다.

 

개발자 버전 사용자 만이 아닌 9월 iOS6 정식때도 변화가 없다면 한국 아이폰/아이패드 유저의 단합된 능력을 보여주자구요~!

 

 

 

 

 

 

소셜 플러그인의 장점?

 

검색만해도 이 소셜 플러그인의 장점은 즐비 하니 대충 생략 하지만~

가장 큰 장점은~ 별도의 가입 절차 없이도 사용가능한 서비스들이라는 점! 특히 댓글의 경우 해당 페이스북 계정만 있다면 누구나 쓸수있다.

물론 진짜 중요한 장점은 해당 댓글에 글을 작성할경우 각각 작성자의 페이스북에도 등록되어 작성자의 지인들에게도 배달 된다는 게 가장 중요한 핵심이긴 하지만..

뭐 그런건 마케팅 분야이니 일갈 하자.

 

페이스북만 소셜 플러그인이 있는것은 아니다. 국내 대표 SNS 인 미투데이 역시 소셜 플러그인을 제공중이다.

페이스북 소셜 플러그인 !! 일명 좋아요 버튼 이나 페이스북 댓글 등 여러가지 플러그인을 페이스북 개발자 페이지에 가면 만들어 낼수 있다. 하지만 전혀 지식이 없는이에게는 이마저도 쉽지 않기도 하고~ 자신의 홈페이지나 블로그등을 운영하지 않는 이라면 더더욱 남의 이야기가 아닐수 없다~

 

꿍알 큐알코드 생성기(http://qoongr.co.kr/code/code_make.html) 에서 새로운 기능이 추가 되었는데 ~

 

바로 소셜 플러그인 큐알코드 이다 .. 사실 이거 때문에 포스팅을 하게 된거 이기도 하고 ㅋ

 

아래는 꿍알에서 가져온 플러그인 큐알코드 사용 방법~!

 

누군가는 필요하고 요긴하게 쓰리라 생각된다~! 무슨 소린지 안다면 말이지만;;

 

-------------------------------------------------------------------------------------------------------------------

Facebook 소셜 플러그인 큐알코드 사용법!

- 개인사업자, 개인블로거, 단체, 개인 등 자신의 사이트나 특정 물건에 대한 피드백/홍보 가 필요한경우~!
- 따로 모바일웹을 생성하고 큐알코드를 생성할 필요없이 꿍알 큐알코드 생성기에서 좋아요 버튼 혹은 댓글 플러그인을 큐알코드,짧은주소 기능과 함께 사용할수있는 서비스입니다.

1. 제목 란에 자신의 사이트명을 작성합니다. URL 부분에는 좋아요/댓글 의 대상이 되는 사이트 주소를 입력합니다.


※ 주의 : 각각의 플러그인 은 URL 을 기준으로 Facebook에서 제공해주는 내용들입니다.
생성한 큐알코드에 귀속되거나 사이트주소의 소유자와는 무관한 페이스북에서 제공하는 내용입니다.

※ Facebook 좋아요 버튼 큐알코드?

- Facebook에서 제공하는 좋아요 버튼은 특정 주소의 사이트(링크)에 대해 Facebook 사용자끼리 공유하기 위한 링크추천 과 같은 개념을 말합니다. 좋아요 버튼을 클릭해서 추천하게 되면 클릭한 사용자의 Facebook에 해당 사이트를 좋아한다는 알림이 뜨고 그런 알림은 사용자의 친구들에게도 보여집니다.

- 꿍알에서 제공하는 좋아요 큐알코드는 큐알코드 생성기에서 생성하기만 해도 특정 사이트의 좋아요 버튼 노출이 가능한 서비스입니다.

- 설정된 주소가 길어 큐알코드가 크고 복잡하므로 사용하실땐 짧은주소 사용을 체크하여 사용하시면 좋습니다.



※ Facebook 댓글 큐알코드?

- Facebook 댓글 큐알코드는 좋아요 큐알코드와 마찬가지로 큐알코드 생성만으로도 사용가능하고, 댓글을 작성하고 볼수있는 서비스입니다.

- 따로 모바일웹페이지를 생성하고 연결하지 않아도 생성된 큐알코드에 바로 생기는 Facebook 댓글 게시판이라고 생각하시면됩니다.


지금 바로 큐알코드를 생성하고 스마트폰의 큐알코드 스캐너로 인식 하여 웹페이지로 직접 확인해보십시요~!

[주의사항]

- 플러그인은 URL 값을 기준으로 보여주는 내용이므로 누구든지 설정 가능하므로 개인에 귀속되는 내용은 아닙니다.
- 소셜 플러그인은 Facebook에서 제공하는 내용을 꿍알 큐알코드와 결합하여 간편하게 설정 사용 하도록 제공되는 서비스입니다.
- 좋아요 숫자, 댓글 내용 모두 Facebook에 보내지고 관리되어 관련 내용은 꿍알에서 임의대로 수정/삭제/복구 불가능합니다.

 

  1. Favicon of http://ustyle9.tistory.com BlogIcon 사슴토끼 2012.04.19 10:55 신고

    잘보고 갑니다. 즐거운 하루 되세요 ^^

+ Recent posts

티스토리 툴바