Home > Store

iOS Auto Layout Demystified, 2nd Edition

Register your product to gain access to bonus material or receive a coupon.

iOS Auto Layout Demystified, 2nd Edition

Book

  • Sorry, this book is no longer in print.
Not for Sale

eBook (Watermarked)

  • Your Price: $19.19
  • List Price: $23.99
  • Includes EPUB, MOBI, and PDF
  • About eBook Formats
  • This eBook includes the following formats, accessible from your Account page after purchase:

    ePub EPUB The open industry format known for its reflowable content and usability on supported mobile devices.

    MOBI MOBI The eBook format compatible with the Amazon Kindle and Amazon Kindle applications.

    Adobe Reader PDF The popular standard, used most often with the free Adobe® Reader® software.

    This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.

Description

  • Copyright 2014
  • Dimensions: 7" x 9"
  • Edition: 2nd
  • Book
  • ISBN-10: 0-321-96719-4
  • ISBN-13: 978-0-321-96719-0

Completed Updated for iOS 7 and Xcode 5

Auto Layout transforms the way you create iOS user interfaces. As flexible as it is powerful, Auto Layout gives you unprecedented control over your iOS user interfaces. But Auto Layout has a reputation for difficulty. In iOS Auto Layout Demystified, Second Edition, world-renowned iOS developer and author Erica Sadun strips away the confusion, helping you gain Auto Layout mastery the easiest way possible: by example.

Fully updated for iOS 7 and Xcode 5, this tutorial delivers everything Sadun’s guides are famous for: clear explanations, expert tips, proven best practices--and, above all, plenty of code to learn from and reuse.

Step by step, Sadun explains how Auto Layout “thinks,” how it works, where it fits, and why it’s more useful (and simpler) than you ever imagined. She offers practical solutions for a wide variety of real-world iOS development challenges, plus innovative ways to use Auto Layout to build interactive elements, animations, and more.

If you’re an experienced iOS developer, this guide will expand your design possibilities, helping you build apps that are superbly usable and intuitive and stand out even in the most crowded marketplace.

Coverage includes

  • Mastering Auto Layout’s basic concepts, techniques, and approach
  • Defining unambiguous, satisfiable constraints that express your layout exactly how you intend
  • Overcoming obstacles to constraint-based user interface design in Interface Builder
  • Using visual formatting to express how items are laid out vertically and horizontally
  • Making visual formats more flexible with metrics dictionaries and layout options
  • Debugging constraints and deciphering those bewildering Xcode log messages
  • Using descriptive techniques to uncover and express natural relationships in your design
  • Applying iOS Auto Layout techniques in Mac OS X apps too

Extras

Related Article

Why the 3.5" Form Factor Still Matters - Even in the Age of the iPhone 5S and Later

Companion Site

Access the sample code associated with iOS Auto Layout Demystified at http://github.com/erica/Auto-Layout-Demystified

Sample Content

Online Sample Chapter

Introducing iOS Auto Layout

Sample Pages

Download the sample pages (includes Chapter 1 and Index)

Table of Contents

Preface     xiii
Chapter 1: Introducing Auto Layout     1

Origins     1
Saying “Yes” to Auto Layout     2
Geometric Relationships     3
Content-Driven Layout     5
Prioritized Rules     6
Inspection and Modularization     6
Incremental Adoption     6
Constraints     7
Satisfiability     7
Sufficiency     8
Constraint Attributes     11
About Those Missing Views     12
Underconstrained Missing Views     13
Missing Views with Inconsistent Rules     14
Tracking Missing Views     14
Ambiguous Layout     15
Exercising Ambiguity     16
Visualizing Constraints     17
Intrinsic Content Size     18
Compression Resistance and Content Hugging     20
Image Embellishments     22
Alignment Rectangles     22
Visualizing Alignment Rectangles     24
Alignment Insets     24
Declaring Alignment Rectangles     26
Implementing Alignment Rectangles     27
Exercises     29
Conclusions     30
Chapter 2: Constraints     31
Constraint Types     31
Priorities     33
Conflicting Priorities     33
Enumerated Priorities     34
Content Size Constraints     36
Intrinsic Content Size     36
Content Hugging     36
Compression Resistance     38
Setting Content Size Constraints in Code     39
Setting Content Size Constraints in IB     40
Building Layout Constraints     41
The Layout Constraint Class     42
Constraint Math     42
First and Second Items     43
Creating Layout Constraints     44
Building NSLayoutConstraint Instances     45
Unary Constraints     45
Zero-Item Constraints Are Illegal     46
View Items     47
Constraints, Hierarchies, and Bounds Systems     48
Installing Constraints     50
Removing Constraints     52
Comparing Constraints     54
Matching Constraints     55
Laws of Layout Constraints     57
Exercises     59
Conclusions     59
Chapter 3: Interface Builder Layout     61
Designing in IB     61
Disabling Auto Layout     62
Opting Out of Auto Layout in Code     63
Combining Autosizing with Auto Layout     64
Basic Layout and Auto-Generated Constraints     64
Inferred Constraints     64
Ambiguity Resolution Constraints     67
Size Constraints     69
A Guided Tour of IB Elements     69
Constraint Listings     76
Xcode Labels     78
Adding Xcode Identities     79
Adding Constraints     80
Dragging     81
Pinning and Aligning     83
Previewing Layouts     85
Inspecting Constraints     88
View Size Inspector     90
Frame and Layout Rectangles     91
Other Size Inspector Items     92
The Resolution Menu     92
Updating Frames and Constraints     92
Adding and Resetting Constraints     93
Clearing Constraints     93
Constraints/Resizing Pop-Up Menu     93
Descendants     94
Siblings and Ancestors     95
The Missing Views Problem     95
Balancing Requests     97
Hybrid Layout     100
Building a Nib File for Testing     100
Adding the Nib File in Code     101
Advantages of Hybrid Layout     102
Removing IB-Generated Constraints     104
Exercises     105
Conclusions     108
Chapter 4: Visual Formats     109
Introducing Visual Format Constraints     109
Options     111
Alignment     112
Skipping Options     113
Variable Bindings     113
The Problem with Indirection     113
Indirection Workaround     114
Metrics     115
Real-World Metrics     115
Format String Structure     116
Orientation     116
Retrieving Constraints by Axis     117
View Names     117
Superviews     118
Connections     118
Empty Connections     118
Standard Spacers     119
Numeric Spacers     120
Referencing the Superview     120
Spacing from the Superview     122
Flexible Spaces     122
Parentheses     123
Negative Numbers     124
Priorities     124
Multiple Views     125
View Sizes     126
Format String Components     128
Getting It Wrong     130
NSLog and Visual Formats     131
Constraining to a Superview     132
View Stretching     133
Constraining Size     134
Building Rows or Columns     135
Matching Sizes     136
Why You Cannot Distribute Views     137
How to Pseudo-Distribute Views (Part 1: Equal Centers)      138
Pseudo-Distributing Views (Part 2: Spacer Views)      140
Exercises     143
Conclusions     143
Chapter 5: Debugging Constraints     145
Xcode Feedback     145
Development Feedback     145
Compiler Feedback     146
Runtime     146
Reading Console Logs     147
Autosizing Issues Example     147
Solution: Switch Off Autosizing Translation     148
Auto Layout Conflicts Example     149
Solution: Adjusting Priorities     150
The Nuclear Approach     150
The Balance Approach     151
Tracing Ambiguity     151
Examining Constraint Logs     152
Alignment Constraint Example     152
Standard Spacers Example     153
Equation-Based Constraint Example     153
Complex Equation Example     154
Multiplier and Constant Example     155
A Note About Layout Math     155
Constraint Equation Strings     156
Adding Names     159
Using Nametags     160
Naming Views     161
Describing Views     161
Unexpected Padding Example     164
The Hugged Image Example     165
View Centering Example     166
Retrieving Referencing Constraints     167
Descent Reports     169
Ambiguity Example     170
Expanding on Console Dumps Example     172
Visualizing Constraints     173
Automating Visualization     174
Launch Arguments     175
Internationalization     177
Doubled Strings (iOS/OS X)      177
Flipped Interfaces (OS X)      178
Flipped Interfaces (iOS)      179
Profiling Cocoa Layout     181
Auto Layout Rules of Debugging     183
Exercises     183
Conclusions     184
Chapter 6: Building with Auto Layout     185
Basic Principles of Auto Layout     185
Layout Libraries     186
Building Libraries     187
Planning Interfaces     190
Building for Modularity     191
Updating Constraints     194
Calling Updates and Animating Changes     195
Animating Constraint Changes on OS X     196
Fading Changes     197
Designing for Edge Conditions     198
Building a View Drawer     200
Building the Drawer Layout     203
Managing Layout for Dragged Views     206
Dragged Views     207
Window Boundaries     208
Exercises     211
Conclusions     211
Chapter 7: Layout Solutions     213
Table Cells     213
Auto Layout and Multiple-Height Table Cells     216
Preserving Image Aspect     217
Accordion Sizing     220
Scroll Views     221
Scroll Views and Pure Auto Layout     222
Hybrid Solution     222
Building a Paged Image Scroll View     223
Centering View Groups     226
Custom Multipliers and Random Positions     228
Building Grids     231
Making Room for the Keyboard     233
Inserting Views at Runtime     236
Adding iOS Frame and Constraint Overlays     237
Motion Effects, Dynamic Text, and Containers     238
Exercises     238
Conclusions     238
Appendix A: Answers to Exercises     241
Chapter 1     241
Chapter 2     242
Chapter 3     243
Chapter 4     245
Chapter 5     247
Chapter 6     248
Chapter 7     249
Index     251

Updates

Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.

Overview


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information


To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.

Surveys

Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.

Newsletters

If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information


Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.

Security


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.

Children


This site is not directed to children under the age of 13.

Marketing


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information


If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.

Choice/Opt-out


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information


Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents


California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure


Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.

Links


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact


Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice


We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020