Preface     xiii
         Chapter 1: Media     1
         Speech     1
         Other Options     3
         Delegate Callbacks     3
         Dictation     5
         Creating Barcodes     5
         Filter Parameters     5
         Building Codes     6
         Reading Barcodes     8
         Listening for Metadata Objects     10
         Responding to Metadata     11
         Extracting Bounds     13
         Enhancing Recognition     14
         Detecting Faces     14
         Building AVFoundation Movies     14
         Creating a Pixel Buffer     16
         Drawing into the Pixel Buffer     17
         Expressive Drawing     18
         Building Movies from Frames     19
         Adding Images to Movies     23
         Wrap-up     24
         Chapter 2: Dynamic Typography     25
         Type Size and User Needs     25
         How Dynamic Type Works     25
         Listening for Type Updates     28
         Handling Dynamic Type with Attributes     31
         Scanning for Text Style Ranges     32
         Applying Text Style Ranges     34
         Attribute-Ready Dynamic Elements     35
         Custom Fonts Faces     36
         Dynamic Text Views     37
         Custom Sizing     38
         Font Descriptors     39
         Descriptor Challenges     40
         Fonts with Multiple Variations     41
         Using String Attributes to Modify Fonts     42
         Dynamic Type Gotchas     43
         Wrap-up     43
         Chapter 3: Text Kit     45
         Creating Complex Text Layouts     45
         Glyphs     46
         Text Storage     55
         Layout Managers     56
         Text Containers     56
         Adaptive Flow     58
         Insets     60
         Exclusion Paths     60
         Bounding Rectangles     62
         Using Text Kit to Add Touch to Labels     63
         Establishing Text Kit     63
         Synchronizing     64
         Translating Coordinates     65
         Glyphs and Characters     66
         Checking for Links     67
         Adding Visual Feedback     67
         Draggable Exclusion Zones     69
         Building PDFs with Text Kit     71
         Printing Text View Data     73
         Printing PDF Data     74
         Wrap-up     74
         Chapter 4: Attributed Strings and Document Containers     75
         Class Enhancements     75
         String Attachments     77
         Building Attributed Strings from HTML     78
         Document Type Dictionaries     79
         Converting HTML Source to Attributed Strings     80
         Converting Attributed Strings to Document Representations     81
         Generating HTML from Attributed Strings     82
         Markup Initialization     83
         RTF and RTFD     83
         The RTFD Container     84
         Initializing Attributed Strings from a File     84
         Converting RTFD Text to Data     85
         Writing RTFD Containers from Data     86
         Inspecting Attributes     87
         Establishing Document Attributes     89
         Enhancing Attributed Strings     91
         Returning Copies with New Attributes     92
         Adjusting Attributes     93
         Extending Mutable Attributed Strings     94
         Text Ranges     95
         Calculating Positions     95
         Position Geometry     95
         Updating Selection Points     97
         Hardware Key Support     97
         Wrap-up     99
         Chapter 5: Animation     101
         Keyframe Animation     101
         Building Physics with Keyframes     103
         Blocking Animators     105
         UIKit Spring-Based Animations     106
         Practical Uses for Spring Animations     108
         System Animations     109
         Motion Effects     109
         Building Planes     110
         Shadow Effects     111
         Custom Transition Animations     113
         Delegation     114
         Building Transitioning Objects     114
         Implicit Animations     116
         Building an Animation-Ready Layer     116
         Building a View Around a Layer     118
         Timing     118
         Coordinating Animations     119
         Building Implicit Completion Blocks     120
         Animating Custom Properties     121
         Intercepting Updates     122
         Drawing Properties     123
         Wrap-up     124
         Chapter 6: Dynamic Animators     125
         Physics-Based Behaviors     125
         Building Dynamics     126
         Detecting Pauses     127
         Creating a Frame-Watching Dynamic Behavior     131
         Implementing Snap Zones     133
         Leveraging Real-World Physics     135
         Connecting a Gravity Behavior to Device Acceleration     137
         Creating Boundaries     138
         Enhancing View Dynamics     138
         Custom Behaviors     139
         Creating Custom Dynamic Items     139
         Subverting Dynamic Behaviors     141
         Better Custom Dynamic Behaviors     142
         Custom Secondary Behaviors     144
         Collection Views and Dynamic Animators     147
         Custom Flow Layouts     147
         Returning Layout Attributes     148
         Updating Behaviors     149
         Building a Dynamic Alert View     150
         Connecting Up the Jelly     150
         Drawing the View     152
         Deploying Jelly     154
         Wrap-up     154
         Chapter 7: Presentations     155
         Alerts     155
         Class Deprecations     155
         Building Alerts     156
         Enabling and Disabling Alert Buttons     161
         Adding Text Fields     162
         Mask Views     164
         Shape Layer Masking     164
         Building Mask Views     166
         Building Effect Views     169
         Building a Blur Effect     170
         Adding Vibrancy Effects     171
         Animating Effect Views     172
         Building Popovers     175
         Supporting Bubbles     176
         Presenting Popovers     177
         Wrap-up     177
         Chapter 8: Shape Magic     179
         How to Shape a View     179
         Expanding Beyond Circles     180
         Resizing Bezier Paths     180
         Building a Bezier-Based Shape Image View     184
         Working with Unclosed Shapes     185
         Adding Borders to Shaped Views     187
         Building Shaped Buttons     190
         Adding Attention-Grabbing Animations to Shaped Views     193
         Wrap-up     199
         Chapter 9: Adaptive Deployment     201
         Traits     201
         Trait Properties     202
         Defining Traits     202
         Combining Trait Collections     203
         Designing for Traits     204
         UIScreen Properties     205
         Coordinate Spaces     205
         Application Frame     206
         Screen Bounds     206
         Scale     207
         Rotation     207
         Size Classes and Assets     208
         Basic Deployment     208
         UIKit and Image Views     210
         The UIImageAsset Class     210
         Building Images from PDFs     211
         Overriding Trait Collections     214
         Building Side-by-Side iPhone Split Views     215
         A Bit More About iOS 8 Split View Controllers     218
         Wrap-up     219
         Chapter 10: Development Helpers     221
         All the Lorems     221
         Placeholder Text     221
         Image Ipsums     223
         Generating Random User Data     225
         Bulk Names     225
         Generating Random Feeds     227
         Random Everything     228
         Directives     229
         Converting Comments to Warnings     229
         Warnings     231
         Testing for the Simulator     232
         Errors     232
         Testing for Inclusion     233
         Messages     234
         Wrapping Pragmas     234
         Overriding Diagnostics     235
         Unused Variable Warnings     235
         Marking Non-null and Nullable Items     236
         Developer Tweaks     236
         Saving Files from the Simulator     237
         Tighter Logging     238
         Wrap-up     238
         Chapter 11: A Taste of Swift     239
         Swift Versus Objective-C     239
         Building iOS Apps in Swift     240
         Optionals     243
         Inferred Types     244
         The Optional Enumeration     245
         Unwrapping Optionals     246
         Assigning Values to Non-optionals     248
         Cocoa Touch Patterns     248
         Hybrid Language Development     251
         Calling Objective-C from Swift     252
         Accessing Classes     252
         Calling Swift from Objective-C     253
         Preparing Swift for Objective-C     254
         Class Descent     255
         Building the Basics     256
         Watching Progress     257
         Learning Swift     259
         Wrap-up     260
         Index     261
      · · · · · ·     (
收起)