What's New in UIKit Dynamics and Visual Effects Session 229

Similar documents
Stanford CS193p. Developing Applications for ios. Winter CS193p. Winter 2017

Modern User Interaction on ios

Building Watch Apps #WWDC15. Featured. Session 108. Neil Desai watchos Engineer

What s New in tvos 12

Adopting Advanced Features of the New UI

SAMPLE CHAPTER. Brendan G. Lim Martin Conte Mac Donell MANNING

What s New in SpriteKit

Mastering UIKit on tvos

ios Accessibility Developing for everyone Session 201 Ian Fisch ios Accessibility

Accessibility on OS X

Leveraging Touch Input on ios

New UIKit Support for International User Interfaces

Using and Extending the Xcode Source Editor

Cocoa Touch Best Practices

View Controller Advancements for ios8

ios Mobile Development

What s New in Xcode App Signing

What s New in NSCollectionView Session 225

Monetize and Promote Your App with iad

Implementing UI Designs in Interface Builder

What s New in tvos #WWDC16. App Frameworks. Session 206. Hans Kim tvos Engineer

Enhancing your apps for the next dimension of touch

Creating Complications with ClockKit Session 209

Mysteries of Auto Layout, Part 1

Advanced Scrollviews and Touch Handling Techniques

Data Delivery with Drag and Drop

Mastering Drag and Drop

Introducing On Demand Resources

WatchKit In-Depth, Part 2

Accessibility on ios. Developing for everyone. Frameworks #WWDC14. Session 210 Clare Kasemset ios Accessibility

Extending Your Apps with SiriKit

Introducing the Modern WebKit API

Swift API Design Guidelines

Quick Interaction Techniques for watchos

Mastering Xcode for iphone OS Development Part 1. Todd Fernandez Sr. Manager, IDEs

lecture 10 UI/UX and Programmatic Design cs : spring 2018

What s New in imessage Apps

Creating Content with iad JS

Mastering Xcode for iphone OS Development Part 2. Marc Verstaen Sr. Manager, iphone Tools

Getting the Most out of Playgrounds in Xcode

Stanford CS193p. Developing Applications for ios. Spring CS193p. Spring 2016

Stanford CS193p. Developing Applications for ios. Winter CS193p. Winter 2017

Designing for Apple Watch

What s New in LLDB. Debug your way to fame and glory #WWDC15. Developer Tools. Session 402

What s New in SpriteKit

Media and Gaming Accessibility

Adapting to the New UI of OS X Yosemite

Building Visually Rich User Experiences

Improving your Existing Apps with Swift

Advanced Debugging and the Address Sanitizer

Storyboards and Controllers on OS X

Stanford CS193p. Developing Applications for ios. Fall Stanford CS193p. Fall 2011

What s New in Metal, Part 2

What s New in MapKit. App Frameworks #WWDC17. Fredrik Olsson

Integrating Apps and Content with AR Quick Look

imessage Apps and Stickers, Part 2

CS193p Spring 2010 Monday, April 12, 2010

What s New in Cocoa for macos

Stanford CS193p. Developing Applications for ios. Winter CS193p! Winter 2015

Custom Drawing & Animation. CS 442: Mobile App Development Michael Saelee

Seamless Linking to Your App

Thread Sanitizer and Static Analysis

Creating Great App Previews

Profiling in Depth. Do you know where your code is? Session 412. Kris Markel Performance Tools Engineer Chad Woolf Performance Tools Engineer

Custom Drawing & Animation. CS 442: Mobile App Development Michael Saelee

ITP 342 Mobile App Dev. Animation

App Extension Best Practices

Introducing Swift Playgrounds

Advanced Cocoa Text Tips and Tricks. Aki Inoue Cocoa Engineer

What s New in ARKit 2

Getting the Most Out of HealthKit

What s New in Notifications

Stanford CS193p. Developing Applications for ios. Spring CS193p. Spring 2016

What s New in Core Image

Building Apps with Dynamic Type

Cross Platform Nearby Networking

Designing Great Apple Watch Experiences

Using Grouped Notifications

Introducing Password AutoFill for Apps

What s New in CloudKit

Announcements. Lab 2 is due next Monday (Sept 25 th ) by 11:59 PM. Late policy is 10% of lab total per day late. So -7.5 points per day late for lab 2

Introduction to Siri Shortcuts

Editing Media with AV Foundation

Optimizing Swift Performance Session 409

Localizing with Xcode 6

Stanford CS193p. Developing Applications for ios. Fall CS193p. Fall

What s New in Core Location

ROSE-HULMAN INSTITUTE OF TECHNOLOGY

Apple Watch Design Tips and Tricks

Integrating Physics into a Modern Game Engine. Object Collision. Various types of collision for an object:

What s New in Core Data?

Building a Game with SceneKit

Finding Bugs Using Xcode Runtime Tools

What s New in Foundation for Swift Session 207

ROSE-HULMAN INSTITUTE OF TECHNOLOGY

Views. A view (i.e. UIView subclass) represents a rectangular area Defines a coordinate space

Advanced Memory Analysis with Instruments. Daniel Delwood Performance Tools Engineer

Event Delivery: The Responder Chain

Enabling Your App for CarPlay

Working with Metal Overview

Transcription:

App Frameworks #WWDC15 What's New in UIKit Dynamics and Visual Effects Session 229 Michael Turner UIKit Engineer David Duncan UIKit Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

Recommended Sessions Getting Started with UIKit Dynamics Advanced Techniques with UIKit Dynamics Creating Custom ios User Interfaces WWDC13 WWDC13 WWDC14

Agenda What we will cover

Agenda What we will cover A basic overview

Agenda What we will cover A basic overview What s new in UIKit Dynamics

Agenda What we will cover A basic overview What s new in UIKit Dynamics Utilizing UIVisualEffectView in your app

Agenda What we will cover A basic overview What s new in UIKit Dynamics Utilizing UIVisualEffectView in your app Best practices for working with UIKit Dynamics and Auto Layout

UIKit Dynamics

UIKit Dynamics 2D Physics-inspired animation system

UIKit Dynamics 2D Physics-inspired animation system Composable and declarative

UIKit Dynamics 2D Physics-inspired animation system Composable and declarative Not a replacement for Core Animation or UIView animations

UIKit Dynamics Sliding example

UIKit Dynamics Sliding example

UIKit Dynamics Sliding example

UIKit Dynamics Sliding example Define the coordinate system

UIKit Dynamics Sliding example Define the coordinate system Provide the overall context for animation UIDynamicAnimator

UIKit Dynamics Sliding example Define the coordinate system Provide the overall context for animation Keep track of behaviors UIDynamicAnimator SlidingBehavior

UIKit Dynamics Sliding example Define the coordinate system Provide the overall context for animation Keep track of behaviors UIDynamicAnimator SlidingBehavior UIGravityBehavior UICollisionBehavior UIAttachmentBehavior

UIKit Dynamics Sliding example Define the coordinate system Provide the overall context for animation Keep track of behaviors UIDynamicItems are associated with one or more behaviors UIDynamicAnimator SlidingBehavior UIGravityBehavior UICollisionBehavior UIAttachmentBehavior UIView

UIKit Dynamics What s new

UIKit Dynamics What s new Support for non-rectangular collision bounds

UIKit Dynamics What s new Support for non-rectangular collision bounds UIDynamicItemGroup

UIKit Dynamics What s new Support for non-rectangular collision bounds UIDynamicItemGroup UIFieldBehavior models vector force fields

UIKit Dynamics What s new Support for non-rectangular collision bounds UIDynamicItemGroup UIFieldBehavior models vector force fields UIDynamicItemBehavior

UIKit Dynamics What s new Support for non-rectangular collision bounds UIDynamicItemGroup UIFieldBehavior models vector force fields UIDynamicItemBehavior UISnapBehavior

UIKit Dynamics What s new Support for non-rectangular collision bounds UIDynamicItemGroup UIFieldBehavior models vector force fields UIDynamicItemBehavior UISnapBehavior UIAttachmentBehavior

UIKit Dynamics What s new Support for non-rectangular collision bounds UIDynamicItemGroup UIFieldBehavior models vector force fields UIDynamicItemBehavior UISnapBehavior UIAttachmentBehavior New ways to debug dynamic animations

Collision Bounds UIDynamicItem

Collision Bounds UIDynamicItem enum UIDynamicItemCollisionBoundsType : UInt { }

Collision Bounds UIDynamicItem enum UIDynamicItemCollisionBoundsType : UInt { case Rectangle }

Collision Bounds UIDynamicItem enum UIDynamicItemCollisionBoundsType : UInt { case Rectangle case Ellipse }

Collision Bounds UIDynamicItem enum UIDynamicItemCollisionBoundsType : UInt { case Rectangle case Ellipse case Path }

Collision Bounds UIDynamicItem enum UIDynamicItemCollisionBoundsType : UInt { case Rectangle case Ellipse case Path } protocol UIDynamicItem : NSObjectProtocol { var center: CGPoint { get set } var bounds: CGRect { get } var transform: CGAffineTransform { get set } }

Collision Bounds UIDynamicItem enum UIDynamicItemCollisionBoundsType : UInt { case Rectangle case Ellipse case Path } protocol UIDynamicItem : NSObjectProtocol { var center: CGPoint { get set } var bounds: CGRect { get } var transform: CGAffineTransform { get set } } optional var collisionboundstype: UIDynamicItemCollisionBoundsType { get } optional var collisionboundingpath: UIBezierPath { get }

Collision Bounds UIDynamicItem enum UIDynamicItemCollisionBoundsType : UInt { case Rectangle case Ellipse case Path } protocol UIDynamicItem : NSObjectProtocol { var center: CGPoint { get set } var bounds: CGRect { get } var transform: CGAffineTransform { get set } } optional var collisionboundstype: UIDynamicItemCollisionBoundsType { get } optional var collisionboundingpath: UIBezierPath { get }

UIDynamicItemCollisionBoundsType Path Convex Convex Counter-clockwise wound Non-self intersecting Concave

UIDynamicItemGroup Individual Items UIDynamicItemGroup

UIDynamicItemGroup Makes multiple dynamic items behave as one Individual Items UIDynamicItemGroup

UIDynamicItemGroup Makes multiple dynamic items behave as one Individual Items UIDynamicItemGroup Preserves the individual collision bounds

UIDynamicItemGroup Makes multiple dynamic items behave as one Individual Items UIDynamicItemGroup Preserves the individual collision bounds Dynamic items in a group must not be added to behaviors individually

UIDynamicItemGroup Makes multiple dynamic items behave as one Individual Items UIDynamicItemGroup Preserves the individual collision bounds Dynamic items in a group must not be added to behaviors individually A group cannot contain other groups

UIDynamicItemGroup Makes multiple dynamic items behave as one Individual Items UIDynamicItemGroup Preserves the individual collision bounds Dynamic items in a group must not be added to behaviors individually A group cannot contain other groups Concave or other complex shapes are possible

UIKit Dynamics Force example

UIKit Dynamics Force example

UIKit Dynamics Force example

UIKit Dynamics Force example A force is modeled as a vector

UIKit Dynamics Force example A force is modeled as a vector Length and direction

UIKit Dynamics Force example A force is modeled as a vector Length and direction UIPushBehavior applies a force

UIKit Dynamics Force example A force is modeled as a vector Length and direction UIPushBehavior applies a force Continuous

UIKit Dynamics Force example A force is modeled as a vector Length and direction UIPushBehavior applies a force Continuous Instantaneous

UIKit Dynamics Force example A force is modeled as a vector Length and direction UIPushBehavior applies a force Continuous Instantaneous

UIKit Dynamics Force example

UIKit Dynamics Force example Vertical motion over time of the sliding view y Time

UIKit Dynamics Force example Vertical motion over time of the sliding view Initial Impulse applied y Time

UIKit Dynamics Force example Vertical motion over time of the sliding view Initial Impulse applied Gravity causes the view s velocity to slow y and eventually reverse direction Time

Physics Fields Linear Gravity as a field Linear Gravity Field

Physics Fields Linear Gravity as a field A function that assigns a vector to each point in a domain Linear Gravity Field

UIFieldBehavior

UIFieldBehavior UIFieldBehavior can be added to a region of your view UIRegion Lines of force

UIFieldBehavior UIFieldBehavior can be added to a region of your view UIRegion The field is evaluated at each point within the region Lines of force

UIFieldBehavior UIFieldBehavior can be added to a region of your view UIRegion The field is evaluated at each point within the region Resulting forces are applied by the animator Lines of force

UIFieldBehavior UIFieldBehavior can be added to a region of your view UIRegion The field is evaluated at each point within the region Resulting forces are applied by the animator UIGravityBehavior is a field already! Lines of force

UIFieldBehavior UIFieldBehavior can be added to a region of your view UIRegion The field is evaluated at each point within the region Resulting forces are applied by the animator UIGravityBehavior is a field already! Simplified physics, well-tuned for performance; not useful for building interstellar space stations Lines of force

UIFieldBehavior Linear Gravity Radial Gravity Noise Custom Drag and Velocity, Vortex, Turbulence, Spring, Electric and Magnetic

UIFieldBehavior Linear Gravity

UIFieldBehavior Linear Gravity Field properties var region: UIRegion var direction: CGVector var strength: CGFloat

UIFieldBehavior Radial Gravity

UIFieldBehavior Radial Gravity Field properties var position: CGPoint var region: UIRegion var strength: CGFloat var falloff: CGFloat var minimumradius: CGFloat

UIFieldBehavior Noise

UIFieldBehavior Noise Field properties var region: UIRegion var strength: CGFloat var smoothness: CGFloat var animationspeed: CGFloat

UIFieldBehavior Custom

UIFieldBehavior Custom Field Sample position velocity mass charge time

Demo UIKit Dynamics StickyCorners

Debugging UIKit Dynamics

Debugging UIKit Dynamics Overlay to show Physics

Debugging UIKit Dynamics Overlay to show Physics Visualize fields, collision bounds, and attachments

Debugging UIKit Dynamics Overlay to show Physics Visualize fields, collision bounds, and attachments Not API, but accessible in lldb

Debugging UIKit Dynamics Overlay to show Physics Visualize fields, collision bounds, and attachments Not API, but accessible in lldb debugenabled

Debugging UIKit Dynamics Overlay to show Physics Visualize fields, collision bounds, and attachments Not API, but accessible in lldb debugenabled debuginterval

Debugging UIKit Dynamics Overlay to show Physics Visualize fields, collision bounds, and attachments Not API, but accessible in lldb debugenabled debuginterval debuganimationspeed

UIDynamicItemBehavior

UIDynamicItemBehavior Customize physical properties

UIDynamicItemBehavior Customize physical properties Applied to one or more items

UIDynamicItemBehavior Customize physical properties Applied to one or more items var elasticity: CGFloat var friction: CGFloat var density: CGFloat var resistance: CGFloat var angularresistance: CGFloat

UIDynamicItemBehavior Customize physical properties Applied to one or more items var var var var var var charge: CGFloat var anchored: Bool

UIAttachmentBehavior

UIAttachmentBehavior Distance attachment

UIAttachmentBehavior Distance attachment Customizable Damping and Frequency

UIAttachmentBehavior

UIAttachmentBehavior Limit Attachment

UIAttachmentBehavior Limit Attachment Behaves like a rope between items

UIAttachmentBehavior Limit Attachment Behaves like a rope between items Attachment point offset from each item s center

UIAttachmentBehavior

UIAttachmentBehavior Fixed Attachment

UIAttachmentBehavior Fixed Attachment Items positioned with respect to the attachment anchor point Attachment anchor

UIAttachmentBehavior Fixed Attachment Items positioned with respect to the attachment anchor point No relative movement Attachment anchor

UIAttachmentBehavior

UIAttachmentBehavior Pin Attachment

UIAttachmentBehavior Pin Attachment Items positioned with respect to the attachment anchor point Attachment anchor

UIAttachmentBehavior Pin Attachment Items positioned with respect to the attachment anchor point Specify a rotatable range Range Attachment anchor

UIAttachmentBehavior Pin Attachment Items positioned with respect to the attachment anchor point Specify a rotatable range Range Attachment anchor

UIAttachmentBehavior

UIAttachmentBehavior Sliding Attachment

UIAttachmentBehavior Sliding Attachment Items positioned with respect to the attachment anchor point Attachment anchor

UIAttachmentBehavior Axis of translation Sliding Attachment Items positioned with respect to the attachment anchor point Allows only relative translation along a specified axis Attachment anchor

UIAttachmentBehavior Axis of translation Sliding Attachment Items positioned with respect to the attachment anchor point Allows only relative translation along a specified axis Prevents relative rotation of the Attachment anchor dynamic items

UIAttachmentBehavior Axis of translation Sliding Attachment Items positioned with respect to the attachment anchor point Allows only relative translation Range along a specified axis Prevents relative rotation of the Attachment anchor dynamic items Specify a translatable range

UIAttachmentBehavior Axis of translation Sliding Attachment Items positioned with respect to the attachment anchor point Allows only relative translation Range along a specified axis Prevents relative rotation of the Attachment anchor dynamic items Specify a translatable range

UISnapBehavior

UISnapBehavior Snap a view in place

UISnapBehavior Snap a view in place Customizable damping

UISnapBehavior Snap a view in place Customizable damping Customizable snappoint

UISnapBehavior Snap a view in place Customizable damping Customizable snappoint

Visual Effects Adding style to your app David Duncan UIKit Engineer

UIVisualEffectView Stylish Overlays

UIVisualEffectView UIBlurEffect enum UIBlurEffectStyle : Int { case ExtraLight case Light case Dark } let blureffect = UIBlurEffect(style:.ExtraLight) let blurview = UIVisualEffectView(effect: blureffect)

UIVisualEffectView UIBlurEffect enum UIBlurEffectStyle : Int { case ExtraLight case Light case Dark } let blureffect = UIBlurEffect(style:.ExtraLight) let blurview = UIVisualEffectView(effect: blureffect)

UIVisualEffectView UIBlurEffect enum UIBlurEffectStyle : Int { case ExtraLight case Light case Dark } let blureffect = UIBlurEffect(style:.ExtraLight) let blurview = UIVisualEffectView(effect: blureffect)

UIVisualEffectView UIBlurEffect enum UIBlurEffectStyle : Int { case ExtraLight case Light case Dark } let blureffect = UIBlurEffect(style:.ExtraLight) let blurview = UIVisualEffectView(effect: blureffect)

UIVisualEffectView UIVibrancyEffect let vibrancyeffect = UIVibrancyEffect(forBlurEffect: blureffect) let vibrancyview = UIVisualEffectView(effect:vibrancyEffect) blurview.contentview.addsubview(vibrancyview) vibrancyview.contentview.addsubview(label)

UIVisualEffectView UIVibrancyEffect let vibrancyeffect = UIVibrancyEffect(forBlurEffect: blureffect) let vibrancyview = UIVisualEffectView(effect:vibrancyEffect) blurview.contentview.addsubview(vibrancyview) vibrancyview.contentview.addsubview(label)

UIVisualEffectView UIVibrancyEffect let vibrancyeffect = UIVibrancyEffect(forBlurEffect: blureffect) let vibrancyview = UIVisualEffectView(effect:vibrancyEffect) blurview.contentview.addsubview(vibrancyview) vibrancyview.contentview.addsubview(label)

UIVisualEffectView UIVibrancyEffect let vibrancyeffect = UIVibrancyEffect(forBlurEffect: blureffect) let vibrancyview = UIVisualEffectView(effect:vibrancyEffect) blurview.contentview.addsubview(vibrancyview) vibrancyview.contentview.addsubview(label)

UIVisualEffectView UIVibrancyEffect let vibrancyeffect = UIVibrancyEffect(forBlurEffect: blureffect) let vibrancyview = UIVisualEffectView(effect:vibrancyEffect) blurview.contentview.addsubview(vibrancyview) vibrancyview.contentview.addsubview(label)

UIVisualEffectView And action!

UIVisualEffectView And action! Bounds

UIVisualEffectView And action! Bounds Effect

UIVisualEffectView Anatomy of an effect

UIVisualEffectView Anatomy of an effect Capture Area

UIVisualEffectView Anatomy of an effect Capture Area

UIVisualEffectView Anatomy of an effect Capture Area

UIVisualEffectView Anatomy of an effect Capture Area Apply Effect

UIVisualEffectView Anatomy of an effect Capture Area Apply Effect

UIVisualEffectView Anatomy of an effect Capture Area Apply Effect Copy Back

UIVisualEffectView Anatomy of an effect Capture Area Apply Effect Copy Back Offscreen Pass

UIVisualEffectView Offscreen Passes Alpha Masking Blur Vibrancy Snapshotting

UIVisualEffectView Offscreen Passes Alpha Masking Blur Vibrancy Snapshotting UIView.snapshotViewAfterScreenUpdates(afterUpdates:) UIView.drawViewHierarchyInRect(rect:, afterscreenupdates:) UIScreen.snapshotViewAfterScreenUpdates()

UIVisualEffectView Offscreen Passes Alpha Masking Blur Vibrancy Snapshotting UIView.snapshotViewAfterScreenUpdates(afterUpdates:) UIView.drawViewHierarchyInRect(rect:, afterscreenupdates:) UIScreen.snapshotViewAfterScreenUpdates()

UIVisualEffectView Anatomy of a broken effect VisualEffectView/Blur

UIVisualEffectView Anatomy of a broken effect Capture Area

UIVisualEffectView Anatomy of a broken effect Capture Area

UIVisualEffectView Anatomy of a broken effect Capture Area

UIVisualEffectView Anatomy of a broken effect Capture Area Nothing!

UIVisualEffectView Fixing broken effects

UIVisualEffectView Fixing broken effects For help in lldb - (NSString *)_whatswrongwiththiseffect

UIVisualEffectView Fixing broken effects For help in lldb - (NSString *)_whatswrongwiththiseffect (lldb) po [myeffectview _whatswrongwiththiseffect]

UIVisualEffectView Fixing broken effects For help in lldb - (NSString *)_whatswrongwiththiseffect (lldb) po [myeffectview _whatswrongwiththiseffect] ISSUE: One or more masking superviews have been found. <UIView: 0x7fa030518810; frame = (0 0; 0 0); layer = <CALayer: 0x7fa03050b190>> UIVisualEffectView cannot be masked, you will need to isolate this effect view into a hierarchy that is not masked or not use masks.

UIVisualEffectView Fixing broken effects Rearrange view hierarchy Effective for Alpha and Masking Root Container apply alpha or masking Blur Content

UIVisualEffectView Fixing broken effects Rearrange view hierarchy Effective for Alpha and Masking Root Blur Container apply alpha or masking Content

UIVisualEffectView Fixing broken effects Rearrange view hierarchy Effective for Alpha and Masking Root Blur Container apply alpha or masking Content

UIVisualEffectView Fixing broken effects Mask views individually Container mask added Content Blur Content

UIVisualEffectView Fixing broken effects Mask views individually Container Content Blur Content

UIVisualEffectView Fixing broken effects Mask views individually Container Content Blur Content mask added

UIVisualEffectView Fixing broken effects Snapshot the window or screen Screen Window Content Content View Snapshot requested Blur

UIVisualEffectView Fixing broken effects Snapshot the window or screen Screen Window View Snapshot requested Content Content Blur

UIVisualEffectView Fixing broken effects Snapshot the window or screen Screen Window View Snapshot requested Content Content Blur

UIVisualEffectView Fixing broken effects Snapshot the window or screen Screen View Screen Snapshot requested Window Content Content Blur

UIKit Dynamics and Auto Layout

UIKit Dynamics and Auto Layout Follow via Auto Layout UIKit Dynamics outside dynamicsview.translatesautoresizingmaskintoconstraints = true Auto Layout inside innerview.leadinganchor.constraintequaltoanchor(dynamicsview.leadinganchor)

UIKit Dynamics and Auto Layout Follow via Auto Layout Lola 011.jpg

UIKit Dynamics and Auto Layout Follow via Auto Layout Lola 011.jpg

UIKit Dynamics and Auto Layout Custom UIDynamicItem

UIKit Dynamics and Auto Layout Custom UIDynamicItem Subclass NSObject

UIKit Dynamics and Auto Layout Custom UIDynamicItem Subclass NSObject Conform to UIDynamicItem

UIKit Dynamics and Auto Layout Custom UIDynamicItem Subclass NSObject Conform to UIDynamicItem Provide.bounds

UIKit Dynamics and Auto Layout Custom UIDynamicItem Subclass NSObject Conform to UIDynamicItem Provide.bounds Update constraints when.center and.transform change

Demo UIKit Dynamics and Auto Layout

Summary Focus on the user experience Always consider performance impact when adding advanced effects

Related Sessions and Labs Getting Started with Multitasking on ipad in ios 9 Presidio Tuesday 4:30PM Multitasking Essentials for Media-Based Apps on ipad in ios 9 Pacific Heights Wednesday 2:30PM Optimizing Your App for Multitasking on ipad in ios 9 Presidio Wednesday 3:30PM Mysteries of Auto Layout, Part 1 Presidio Thursday 11:00AM Mysteries of Auto Layout, Part 2 Presidio Thursday 1:30PM Building Responsive and Efficient Apps with GCD Nob Hill Friday 10:00AM UIKit and UIKit Dynamics Lab Frameworks Lab C Friday 11:00AM

More Information Documentation UIDynamicAnimator Class Reference UIFieldBehavior Class Reference Technical Support Apple Developer Forums Developer Technical Support UIDynamicBehavior Class Reference UIAttachmentBehavior Class Reference Curt Rothert Sample Code StickyCorners App Frameworks Evangelist rothert@apple.com http://developer.apple.com/library