├── README.md ├── Auto Layout Book Outline.md └── Auto Layout Book Log.md /README.md: -------------------------------------------------------------------------------- 1 | # Auto Layout Book 2 | 3 | A beginner's guide to Auto Layout using Xcode 10 and Storyboards 4 | 5 | [Sign up to learn more >>](https://pages.convertkit.com/e119bf9a85/858c1c1a46) 6 | 7 | ## Publish Date 8 | 9 | February 12th, 2019 10 | 11 | ## Who's the Book for? 12 | 13 | * Beginners to Auto Layout 14 | * Beginners to App UI Design 15 | * Experienced programmers struggling with Auto Layout 16 | 17 | ## About the Author 18 | 19 | Paul Solt is a former Apple employee who has been building iPhone apps since 2010. He's an Adjunct Professor at Rochester Institute of Technology and has a Master's degree in Computer Science. His 7 apps have over 640,606 downloads, and he currently teaches iOS app development for beginners at [SuperEasyApps.com](http://SuperEasyApps.com). Paul loves to run, read books, cook, eat plants, and play ultimate frisbee. 20 | 21 | ## Details 22 | 23 | * Estimated Length 24 | * 20 Chapters 25 | * Target Velocity 26 | * Writing Start Date 27 | * September 17th 28 | * Writing Finish Date 29 | * Novemeber 27th 30 | * Currently Editing 31 | 32 | ## High Level Outline 33 | 34 | ### Section 1: Auto Layout Fundamentals 35 | 36 | 1. Auto Layout 101 37 | 2. Auto Layout Concepts 38 | 3. Auto Layout Best Practices 39 | 4. Thinking with Auto Layout 40 | 5. 30-Day Auto Layout Challenge 41 | 42 | ### Section 2: Design 43 | 44 | 1. Responsive design 45 | 2. Accessibility 46 | 3. Translating designs into prototypes 47 | 4. Copy real world apps (3 examples) 48 | 5. Fake it till you make it 49 | 50 | ### Section 3: Troubleshooting Auto Layout 51 | 52 | 1. 10 Beginner Mistakes 53 | 2. Debugging Auto Layout 54 | 3. Best practices for conflicts 55 | 4. Resolving Conflicts 56 | 5. It's not you, it's Xcode 57 | 58 | ### Section 4: Auto Layout Quick Reference 59 | 60 | 1. UI Elements 61 | 2. UI Containers 62 | 3. Text + Images 63 | 4. Common Layouts 64 | 5. Complex UI (Stacking constraints) for iPhone SE or %-based 65 | -------------------------------------------------------------------------------- /Auto Layout Book Outline.md: -------------------------------------------------------------------------------- 1 | # Auto Layout Book 2 | Paul Solt 3 | 4 | 9-18-2018 5 | 6 | **Topic:** iPhone App UI Design with Auto Layout and Storyboards 7 | 8 | Nonfiction > Computers > User Interfaces 9 | Nonfiction > Computers > Programming > Mobile Devices 10 | 11 | 12 | My rough draft outline for the [Auto Layout Book](http://bit.ly/AutoLayoutBook). Chapters and ideas are subject to change. 13 | 14 | NOTE: You can send me an [email](Paul@SuperEasyApps.com) if you want something included. 15 | 16 | # Section 0: Introduction 17 | 18 | * Preface: Introduction to book 19 | * Why Storyboard Auto Layout 20 | * Visual 21 | * Can be done in code after you understand fundamentals 22 | * Easier to tweak designs for different devices 23 | * Layout of This Book (Format) 24 | * Sections and chapters overview 25 | * Download the Books Code and Resources 26 | * Github 27 | * Code and Design License 28 | * Supplemental Video Course on Auto Layout 101 29 | * Enroll in the supplemental video course 30 | * Watch videos to see how to do it 31 | * Get help 32 | * Super Easy Apps community forum 33 | * Good post form 34 | * Contact 35 | * Post your question on the forum, and email me 36 | * Hire Super Easy Apps 37 | * Need help fixing the UI in your app? 38 | * Auto Layout Books and Resources 39 | 40 | ## Section 1: Auto Layout 101 41 | 42 | # Chapter 1: Why Auto Layout? 43 | 44 | * Introduction 45 | * Design language for modern software UI 46 | * Modern iPhone UI Design 47 | * Examples of Screen Sizes 48 | * Screenshots of an app on iPhone SE vs. iPhone XS Max 49 | * Enabling People with Limited or Impaired Vision 50 | * Accessibility 51 | * Responsive Designs 52 | * Resizable Windows / Views 53 | * Resizable windows / split views / slide overs / Air Play monitors 54 | * Device sizes 55 | * Landscape and portrait orientations 56 | 57 | # Chapter 2: What is Auto Layout 58 | 59 | * What Does Auto Layout Do? 60 | * Rules for positions/sizes/spaces 61 | * Size + position 62 | * Exercise: Coordinate system demo (download app) 63 | * Points vs. Pixels 64 | * Vectors vs. Pixels 65 | * Pros and Cons of Vectors 66 | * Exercise: Preserving vector data (scaling up for accessibility) 67 | * What Are Constraints? 68 | * What Is a Constraint? 69 | * Constraints Explained Simply 70 | * Constant 71 | * Relation 72 | * Constraint Anatomy 73 | * Left Right vs. Leading Trailing 74 | * Language Direction Matters (iPhone can flip layout!) 75 | * EXERCISES: 76 | * Paper Auto Layout 77 | * App Ideas: It All Starts on Paper 78 | * Digital Sketch 79 | * Sketch Challenge 80 | * Workbook Layout Challenge: Design the Room 81 | * Layout Instagram: Workbook Challenge 82 | * #PaperAutoLayout Challenge 83 | * MEASURE 84 | * Sketch Instagram Story Editor (2018) on paper 85 | * Add rules for the distances (can you measure? xScope or best guess, or Photoshop inspect + count pixels / resolution) 86 | * 3 Equal width buttons 87 | * Instagram UI vs. Auto Layout constraints 88 | 89 | # Chapter 3: Xcode Quick Tour 90 | 91 | * Xcode Interface Builder (Quick Tour) 92 | * Error Panels 93 | * Issue Navigator 94 | * Document Outline Error Panel 95 | * Utilities Panel 96 | * Canvas 97 | * Console Output (Errors) 98 | * Object Library (Xcode <=9 vs. Xcode 10+) 99 | * Xcode 9 Object Library 100 | * Xcode 10 Object Library 101 | * Option + Click button or Option + Drag to "pin" panel 102 | * Xcode BUG: Feature add a button to pin the panel open 103 | * Xcode Lies [[TODO: Move to Debugging section]] 104 | * Read between the lines 105 | * Learn to interpret what Xcode is telling you 106 | * Search Google for why? 107 | * Xcode isn't good at telling you why, only that something isn't right (or expected) 108 | * See Xcode Bug Triage section 109 | * EXCERCISE 110 | * UILabel + UITextField + Button + View (orange top view 200 px) 111 | * Content on bottom edge of top view 112 | 113 | # Chapter 4: Xcode is not a design tool 114 | 115 | * Don't design in Xcode 116 | * Implement designs in Xcode (add the rules) 117 | * Layout in Xcode 118 | * Then add constraints (the rules) 119 | * Hire a UI/UX designer ??? 120 | * UI: how it looks 121 | * UX: how it works 122 | * Upwork 123 | * Mood board on Pinterest (fonts, colors, shapes) 124 | * Read: Artwork Evolution hiring an artist 125 | 126 | 127 | ## Overflow: 128 | 129 | * When You've Wasted 3 Weeks on Bad Feature 130 | 131 | 132 | TODO: get the reader to describe on paper how Instagram UI should be displayed #AutoLayoutOnPaper 133 | 134 | ## Section 2: Test Drive Auto Layout 135 | 136 | * Real World Example 137 | * Design for one iPhone 138 | * Add constraints to the Tip Calculator app 139 | * Centering Content in Container Views 140 | * Equal width contraints 141 | * Structural vs. accessory views 142 | * Undo/redo/restart 143 | * Breaking Constraints (unpredictable behavior) 144 | * Common Errors 145 | * Let's break it 146 | * Colors of Auto Layout 147 | * Ambiguous 148 | * Conflicting 149 | * Images 150 | * Content mode 151 | * Clipping 152 | * Stretching 153 | * TODO: Challenge 1: Do it again from scratch 154 | * MOVE: Challenge 1a: connect the UI 155 | * DONE: Challenge 2: add iPhone X support (Safe Areas) 156 | * TODO: Challenge 3: Reset to suggested constraints (does it work?) 157 | * DONE: Add iPhone 8 Plus support (larger … button stretching) 158 | * TODO: Add iPhone SE support (smaller buttons 44pt?) 159 | 160 | ## Chapter 3: Auto Layout Fundamentals 161 | 162 | 163 | 164 | 1. Layout for one device 165 | 2. Keep it simple, get something working 166 | 3. Design for iPhone 8 (or iPhone X) 167 | 4. Add constraints 168 | 5. Iterate 169 | 6. Tweak for other screen sizes (Repeat) 170 | 2. Types of layout 171 | 7. Percentage-based layouts 172 | 8. Fixed layouts 173 | 9. Relative layouts 174 | 10. "Responsive" - might be a bad term to use 175 | 11. **Resizable Layouts** 176 | 10. Building blocks 177 | 11. Structure views 178 | 12. Accessory views 179 | 13. Regions 180 | 14. Resizable Regions 181 | 15. Fixed Regions 182 | 16. 1 Resizable region per axis 183 | 17. Multiple resizable regions requires a relationship (1:2 constraint) 184 | 13. Constraint 101 185 | 14. Anatomy of a constraint 186 | 13. Multiplier 187 | 14. Priority 188 | 14. Multiple constraints 189 | 15. Internal constraints 190 | 16. Intrinsic Content Size (Label is 251 content hugging) 191 | 16. Content Hugging Priority 192 | 17. Content Stretching Priority 193 | 18. Stack views 194 | 19. Spacing constant set to … default canvas … makes alignment confusing … 195 | 15. Colors of Auto Layout 196 | 4. Size Classes + Rotation 197 | 5. We won't be using in this beginner's book 198 | 6. Many apps do not support rotation (Facebook or Instagram) 199 | 7. Unless it’s video content 200 | 8. Simplify 201 | 7. iPad vs. iPhone 202 | 8. iPad Splitview 203 | 15. 7 Ways to add constraints 204 | 18. Intrinsic Content Size (other section?) 205 | 19. Brief overview 206 | 19. Single screen vs. scrollable screen 207 | 16. Different design considerations with layout 208 | 17. Scrollable interface for super large fonts (edge case and more work) 209 | 20. Data driven UI vs. static content 210 | 21. Margins 211 | 22. Safe areas 212 | 23. Localization 213 | 24. Button sizes 214 | 25. Apple’s iOS HIG 215 | 26. Apple’s macOS HIG 216 | 27. Accessibility 217 | 28. Dynamic Type 218 | 29. Voice over 219 | 30. UI testing 220 | 31. Preview 221 | 32. Device > Simulator > Preview 222 | 33. Test it 223 | 34. Edge cases (sample data) 224 | 35. UITests 225 | 36. Dark mode 226 | 15. Asset Catalog 227 | 16. Adding images to Xcode 228 | 16. Slicing 229 | 17. Stretchable images 230 | 18. Template images? 231 | 16. Hugging + Stretching Priorities 232 | 233 | 234 | 235 | 236 | ## Chapter 4B: Storyboard Fundamentals (TODO: Did I do this?) 237 | 238 | 1. Selection 239 | 2. Editing 240 | 3. Navigation 241 | 4. Error panels 242 | 243 | ## Chapter 4: Layout 244 | 245 | 1. Layout 246 | 2. Design for One Device 247 | 3. Layout for One Device 248 | 4. Don't Design in Xcode 249 | 5. Use Sketch for easier zoom in/out, number tweaking 250 | 6. Layers are backwards order 251 | 7. Layer control is harder 252 | 6. Adapt Designs to Xcode 253 | 7. Why it's Different in Xcode 254 | 8. San Fransisco Font 255 | 9. Margins on Table View Cells change depending on device or orientation 256 | 10. Gradients rendered different than design tools 257 | 7. Layout Building Blocks 258 | 8. Structural views 259 | 8. Centered Content Containers 260 | 10. Single Element 261 | 9. Equal Width Buttons and Spacing 262 | 10. Spacer Views 263 | 12. Refactor Layouts for Usage 264 | 13. Get an initial design 265 | 14. Refactor the layout to support animations, experiences, or dynamic content 266 | 16. Margins and Safe Areas 267 | 17. Standard widths on iOS 12 268 | 18. Equal Width Buttons 269 | 19. Edges: 16 points 270 | 19. Internal spacing: 8 points 271 | 20. Sometimes: 0 points 272 | 23. Layering Content 273 | 24. UILabel on top of UIImage 274 | 25. UITextField on top of UIImage 275 | 27. Containing Complex UI 276 | 28. Create .xib IBDesignable containers 277 | 29. Simplify constraints by defining elsewhere 278 | 32. Block UI into sections 279 | 33. UIView Containers for percentage or fixed sizes 280 | 35. Relative Layouts 281 | 36. Leverage the position of one element to guide position of related 282 | 11. Iterative Design 283 | 1. Version control + saving / backups 284 | 12. Layout Existing Designs 285 | 13. Design files to Xcode Storyboard 286 | 14. Sketch Measurements Plugin 287 | 15. Working with designers 288 | 16. Nudging views 289 | 13. Tip Calculator (iPhone 8) 290 | 14. Content Containers 291 | 15. Equal width views 292 | 16. Stylized UITextField 293 | 17. Stylized UILabel 294 | 18. Background Image Views 295 | 19. Centering Content (Top View) 296 | 20. Centering labels onto of background views 297 | 20. Without arrow 298 | 21. With Arrow 299 | 20. Calculator (iPhone 8 Plus) 300 | 21. Rough Layout Calculations 301 | 22. Screen size / number of elements 302 | 23. Space between 303 | 22. Equal spaced buttons 304 | 22. Equal width and height buttons 305 | 23. Resizable Buttons 306 | 24. Percentage based views 307 | 25. Use math to calculate position on screen (height * .20) 308 | 26. Instagram Story Editor (iPhone XS) 309 | 27. Relative layout 310 | 28. Camera / design tools overlay 311 | 30. Limitations of Storyboard files 312 | 1. Custom Views + composition 313 | 2. Simplifying constraints 314 | 315 | 316 | ## Chapter 5: Thinking with Auto Layout 317 | 318 | 1. Workflow (Review my 30 auto layout best practices) 319 | 1. Top to Bottom 320 | 2. Structure/containers before accessory views 321 | 3. Outside-in 322 | 4. Pin Tool for Multiple Constraints 323 | 5. Right-click and drag for Relationships 324 | 2. Practice Auto Layout Constraints 325 | 1. Tip Calculator 326 | 2. Calculator 327 | 3. Instagram Story Editor 328 | 4. Rearranging Views 329 | 5. Switch a Label and an IMage (QUiz App) 330 | 5. Rearranging Stack Views (Implement Quiz App with Stack Views) 331 | 6. Resizable Buttons (iPhone SE vs. iPhone XS Max) Quiz App 332 | 333 | ### 30-Day Auto Layout Challenge 334 | 335 | 1. 30 Days AutoLayout 336 | 1. Different challenges will reference different sections in the book 337 | 2. Re-read a section the night before, so that you can complete the challenge the next day 338 | 2. Pinterest Mood board 339 | 3. Find what you like, mimic it 340 | 4. Tools 341 | 1. Sketch (and plugins measure, ) 342 | 2. Xcode 10 343 | 3. Apple SF Fonts (restrictions on usage) 344 | 4. iOS device 345 | 5. USB cable 346 | 6. Pen and paper (pencil) 347 | 7. People (friends to try your apps) 348 | 349 | 350 | ## Chapter 6: Stack Views 351 | 352 | 10. Seeing Stack Views 353 | 11. Centered Content 354 | 12. One element 355 | 13. Equally spaced (and centered) 356 | 14. Two or more elements 357 | 16. Embedded Stack Views (Inception) 358 | 16. Equal widths and spacing 359 | 17. Implicit auto layout constraints 360 | 18. Stack View Calculator Layout 361 | 19. Redo the layout from [Layout chapter] 362 | 19. Stack View from App Screens 363 | 20. [[IMAGE: Weather App + Stack Views for high level layout]] 364 | 21. Why you can't resize stack views (Need layout constraints) 365 | 22. Spacer views with 1 1 compression resistance 366 | 23. Container stack views to enable easy rotation support 367 | 24. Enabling size class variations and testing 368 | 369 | ## Chapter 7: Table Views and Scrollable Content 370 | 371 | TODO: Reduce the scope to covering only the essentials of design, static and more custom prototype cells will be a topic for a future book. 372 | 373 | 1. Table View Introduction 374 | 2. Seeing Table Views 375 | 3. Settings 376 | 4. Maps Panel 377 | 5. Facebook 378 | 6. Static Table Views (Storyboard only) 379 | 7. Add layout constraints in Storyboard 380 | 8. Quick and easy settings panels (Fast prototyping) 381 | 7. Dynamic Table Views 382 | 8. Prototype Cells 383 | 9. Xib Table View Cells 384 | 10. Programmatic Table View Cells 385 | 11. Xcode 10 and TableView Storyboard Bugs 386 | 12. Prefer Loading .xib 387 | 13. Easier to change layout without touching main storyboard (better for teams) 388 | 14. Less clicking to edit 389 | 15. More predictable behavior 390 | 16. Able to test resize/compression easily 391 | 17. Test content resize with "fake data" 392 | 18. Con: harder to see the "big picture", use a design file 393 | 20. Designing for Table Views 394 | 21. Margins change sizes depending on device 395 | 22. Pin to cell margins for proper iOS style 396 | 23. Leverage automatic sizing for multiline labels and Dynamic Text 397 | 24. Design interfaces that scale different fonts sizes 398 | 25. Design in Sketch, implement in Xcode 399 | 26. Understanding Behavior 400 | 27. The Rule of One 401 | 28. One view can stretch in vertical or horizontal directions 402 | 29. More than one, you'll need constraints establishing the relationship, otherwise it's ambiguous 403 | 31. Two vertical multiline labels 404 | 32. Profile image with multiline labels 405 | 33. Facebook post with an image 406 | 34. Image settings 407 | 35. Clipping 408 | 36. Fixed width/height 409 | 34. Different TableViewCells for different content 410 | 35. One cell versus many cells 411 | 36. Design for one interface 412 | 37. One cell requires connecting constraints/stack views to change constraints or hide cells (Needs code) 413 | 38. All need code, since you'll need new outlets for new content to layout properly 414 | 40. Reserved names 415 | 41. UITableView cell already defines names, you need to connect different names 416 | 43. Hugging and Stretch for Automatic TableViewCells 417 | 44. TableViewCells that use automatic height will relayout the UI to fit the content (if your constraints are correct) 418 | 45. Different behavior for layout than you see in a standard UIViewController, which changes shape and has to stretch or compress 419 | 47. Xcode 10 Differences from Xcode 9 420 | 48. Bugs: Images do not render when Storyboard first opened 421 | 49. Changes: Font sizes or frames may be different for labels in Xcode 422 | 19. Exercises 423 | 20. Create a layout for a blog post 424 | 21. Title 425 | 22. Publish Date 426 | 23. Author 427 | 24. Body 428 | 26. Text Selection 429 | 27. UILabel doesn't support selection 430 | 28. Use UITextArea and disable edit if you want to enable selection 431 | 29. Users may like to copy text, and the UILabel makes it impossible 432 | 30. Disable scroll and it'll self size itself like a UILabel (documentation on scroll) 433 | 434 | 435 | 436 | ## Chapter 8 Troubleshooting Auto Layout 437 | 438 | 1. When things don’t work like you expect 439 | 1. Start over from scratch 440 | 2. Create a test Xcode project 441 | 3. Reset your constraints and try again 442 | 4. Block the design 443 | 4. Clear the slate 444 | 5. Clear constraints and fix your layout 445 | 5. Set identifiers for UI elements (so you can read error messages) 446 | 6. Use WTFAutoLayout.com 447 | 7. Review the fundamentals of constraints, priorities, and content hugging/compression resistance 448 | 8. Use "Super Easy Auto Layout" (See chapter XX) 449 | 9. Draw or Sketch designs outside of Xcode 450 | 10. Triage an Auto Layout Error message [triage-auto-layout-error] 451 | 11. Steps to take 452 | 12. WTF Auto Layout 453 | 12. Still stuck? Start over 454 | 2. Fixing 9 common beginner mistakes 455 | 1. Text Clipping Issues 456 | 2. Fixed height constraints on a font 457 | 3. Fixed width with a single line label 458 | 4. Not using a Content View for UIScrollViews (See video) 459 | 5. Conflicting constraints (rules that don't work together) 460 | 6. Direct conflict 461 | 7. Indirect conflict 462 | 8. Ambiguous constraints (not enough rules) 463 | 9. Multiple solutions 464 | 10. Exercise the ambiguity 465 | 1. LLDB 466 | 2. Function call (hook up a button to test) 467 | 11. Too many constraints (Over-constrained) 468 | 12. Reduce to the minimum you require 469 | 13. Layout rules are not multi-device safe (conflict on a different size class) 470 | 14. Vertical and horizontal dimensions are not specified for a table view cell (default height + clipping) 471 | 15. Content Hugging Errors (See the Rule of One Resizable View) 472 | 16. Content Compression Errors (See the Rule of One Resizable View) 473 | 17. Fixed Frame Layouts 474 | 18. Can work for small widgets, but not full width/height view controllers 475 | 19. Using Recommended Constraints (NEVER) 476 | 20. Switching Size Classes (or rotating) before adding all the constraints (All or nothing) 477 | 6. Level up your development 478 | 1. Daily Log (Markdown) 479 | 2. Practice (Code Katas) 480 | 3. Start the 30-Day Auto Layout Challenge 481 | 7. Auto Layout table view cells 482 | 8. Get Audited 483 | 1. Auto Layout Audit 484 | 2. Accessibility Audit 485 | 3. Usability Audit 486 | 9. Diagnose Auto Layout Problems (Expert System to direct to further resources) 487 | 1. Take the quiz to figure out your problem 488 | 489 | ----- 490 | 491 | 492 | FUTURE 493 | 17. Placeholder constraints??? When? 494 | 495 | * Make UI static screen, "but enable scroll if Dynamic Text increases"(flag?) 496 | * Decide what max text size you want to support 497 | * Increasing button size (inset vs. larger frame) 498 | * Techniques and strategies 499 | * 500 | * Accessibility: Make the Images Resizable Vectors 501 | * In the Asset Catalog if you're using vector images, you can make the button graphics scale based on the system font size. 502 | * Test It with Accessibility Inspector 503 | 504 | 505 | 506 | 21. Not using the Undo/Redo Keys 507 | 3. Improve your workflow 508 | 1. Not using Inequalities for edge cases 509 | 2. Not changing content hugging or compression resistance priorities 510 | 3. Having a fallback scenario 511 | 4. Not testing large fonts (Accessibility Inspector) 512 | 5. Not testing long text strings (User generated content) 513 | 6. Not testing different aspect ratio images 514 | 7. Not testing large and small images 515 | 8. Not using a representative data set to exercise all of your constraints 516 | 9. Not logging errors to console/log file (SwiftyBeaver) 517 | 10. Not backing up your work with Github 518 | 11. Not communicating about UI changes with your team (Project + Storyboard merge conflicts) 519 | 12. Xcode changes every open (Throw away changes you don't need) 520 | 13. Github + Git 521 | 14. Register for details about my Github for iOS Developers Course 522 | 4. Common Beginner iOS UI Errors + Crashes 523 | 1. Some errors are unrelated to Auto Layout, but reside in the UI + code connection 524 | 2. Missing function (unrecognized selector) 525 | 1. Command + Shift + F for the "Selector name", add the missing function 526 | 3. Not registering a Table View Cell with a table view 527 | 4. Not setting the Table View Cell reusable identifier 528 | 5. Unable to connect IBOutlets + IBActions: Not subclassing from the correct class type UITableViewCell, UICollectionViewCell or UIView 529 | 6. Breakpoint "crash" - You added a break point 530 | 7. Optional crash from deleted property connection - Reconnect the UI element to the code 531 | 8. Wrong UI object connected to code 532 | 9. Proper way to remove an outlet/connection (Delete from the button) 533 | 10. Fix your spelling mistakes correctly (Crash on launch) 534 | 5. Bad advice: When to ignore Xcode errors and warnings 535 | -------------------------------------------------------------------------------- /Auto Layout Book Log.md: -------------------------------------------------------------------------------- 1 | # Auto Layout Book Log 2 | Paul Solt 3 | 4 | My Progress Log on writing the [Auto Layout Book](http://bit.ly/AutoLayoutBook) 5 | 6 | ## Goal 7 | 8 | * New launch date: February 12th, 2019 9 | 10 | # December 19 2018 10:31:54 11 | 12 | * Day 10 of editing 13 | * hitting the pavement and exercising first thing has brought more energy back, I missed doing this after I pulled my back 14 | * I need to get back into a little faster routine, but for now, being active and sleeping better is my priority, so I can think, rearrange, and organize my thoughts 15 | * Wrote and edited over 2,193 words, good progress for intro chapter getting people to understand how a constraint works with a real world example. 16 | * Need to make sure I have project downloads (how to organize xcode projects?) 17 | 18 | # December 18 2018 12:55:18 19 | 20 | * Day 9 of editing 21 | * Took a break from working on the book to try and recharge 22 | * Need more sleep 23 | * Trying to get more sleep by cutting off devices between 9/930pm, so I can read a printed book to fall asleep easier 24 | * Next: try to avoid eating too late (after 8pm) 25 | * I'd like to create a list of the best practices, and then reference them from the sections where it's relevant, that way I can allude to a best practice, and followup with more discussion, rather than getting to into the weeds during the demonstration portion. 26 | * I think it's still good to walk through, but it would be equally nice to have a "quick tutorial" that you can follow fast, rather than having to go through all the why 27 | * Finished editing the bulk of Chapter 2 28 | * Added exercises 29 | * Added challenges 30 | * Added objectives 31 | * Question: I can get button heights to reduce with extra constraints, but how can I get font sizes to reduce on smaller screen sizes without code? 32 | * Is there any way to tie constraints to the font size? 33 | * I think you need code, and you'll need to look at the vertical size 34 | * Make a cutoff for heights < 5XX, and reduce fonts across the board for the UI (Assuming we're not rotated ... even if we rotate you might want to adjust ... or don't rotate) 35 | * BP20: You always want to stretch a stack view using constraints, not by dragging it's size, otherwise you'll end up adding huge spacers, which will throw off your layout design. 36 | * BUG with layout width ... strange things happening on iPhone XS Max with percentage based constriants and a stack view fill proportionally 37 | * I can't figure out what Keith talked about with adding a constraint when in a stack view 38 | * I'm not exactly sure what he's talking about, but I'm not sure how to get the spacing on the left, unless you set a space on the stack view itself, using the width the view ... is that what he means? 39 | * BP21: You can set fixed layout margins on a Stack View to inset the content a fixed distance from the edges (1/2 space of view contained within if using 50x50 squares) 40 | * At that point, maybe a collection view is better ? 41 | 42 | # December 14 2018 09:39:13 43 | 44 | * Day 8 of editing 45 | * Cross references across chapters are going to be challenging, unless I have a convention for linkings 46 | * A.A, so that I can renumber later ... not sure what chapter numbers will be yet, so if I use letters, then I can rename all instances. 47 | * Use X.X for any that I don't need to reference, use A.B, A.C for ordering (doesn't need to be in-order, just needs to be unique) 48 | * Can write a script to reorder and update all references 49 | 50 | # December 13 2018 11:37:59 51 | 52 | 53 | * Day 7 of editing 54 | * Points vs. Pixels might be enough to extract into it's own chapter 55 | 56 | # December 12 2018 13:26:21 57 | 58 | * Day 6 of editing 59 | * Had 4 productive pomodoros (25 min) editing the first chapter and moving content to the 2nd chapter 60 | * Trying to get the basic structure in place using the content and ideas that I've written down in the writing phase 61 | * 5 pomodoro's 62 | * 4,212 words add, 2830 words removed 63 | * Finishing up Chapter 1, and reworking Chapter 2 64 | 65 | # December 11 2018 09:43:44 66 | 67 | * Day 5 of editing 68 | * Do I need permission to use screenshots in the book? 69 | * Prefer to use all my app screenshots, but it might be nice to showcase some other apps ... but maybe that's why other books avoid showing good looking apps ... it's expensive? 70 | * Am I allowed to mention popular apps? Or do I need permission to use their trademark names in my book? 71 | * Ask Amanda input on screenshots/trademarks 72 | * What did About Face do for trademarks of screenshots of apps and critique ? 73 | * Keep it positive? 74 | * Trademark list 75 | * Apple TV, Apple Watch, Mac, macOS, iOS, Xcode, Dynamic Type, Split Screen, Slide Over, iPhone X, iPhone SE, iPhone XS Max, iPad, iPhone XR, iPhone 8, iPhone 8 Plus, App Store, iOS, iOS 12, 5K Retina iMac, 76 | * Cocoa, Swift, Auto Layout, Storyboard, Accessibility Inspector, 77 | * Sketch 78 | * 1,373 words today 79 | * Spent a lot of time researching IBDesignable, stack views with IBDesignable (XIBTest for Tip Callout) 80 | * Spent time reviewing a tutorial lesson on creating a Quiz interface 81 | * 4 buttons + image + question with a Nav bar is limited space on iPhone SE ... collapse buttons to minium, reduce font size ... use large text, collapse buttons to 4 up square instead of vertical 82 | * Tried using the Ripple delete in Screenflow 83 | * Screencast had too much mouse movement 84 | 85 | # December 10 2018 20:05:16 86 | 87 | * Day 4 of editing 88 | * Wrote: 3698 words 89 | * Rearranged content from Section 1 into 5 chapters within Auto Layout 101 section 90 | * Submitted 3 bug reports on Asset Catalog + Alignment Rectangles 91 | 92 | # December 8 2018 14:26:06 93 | 94 | * Day 3 of editing 95 | * Trying to copy/paste content into sections using Multimarkdown so I can see TOC and place in spots 96 | * 97 | 98 | # December 7 2018 11:29:15 99 | 100 | * Day 2 of editing 101 | * I've created two scripts for converting text into an outline, and then back into headings 102 | * My chapters are really sections, so I need to split them up into the parts, and I need to rearrange the content. 103 | * I'm rearranging the content in an outline form, where I've taken the section titles and inserted them into my current outline 104 | * Then I took my new outline and converted it into headings, so that I can copy/paste from the section into the appropriate locations 105 | * I'll remove parts that are not needed into an "overflow" file 106 | * Next I'll do my read through and pass the documents to my copy editor 107 | * I'm not good at OS scripting, and the scripts aren't as robust as I'd like. 108 | * It's really hard to test OS scripts, and I keep having bugs with typing, which is why I plan on doing more scripting using Swift where I can write unit tests and verify the logic works without breaking 109 | 110 | 111 | # December 6 2018 10:57:58 112 | 113 | * Day 1 of Editing the book! 114 | * I haven't been tracking my edits, and it's been slower than normal because Steph and I have been under the weather 115 | * I created a script headings to convert my markdown headings (#) into a bulleted list, so I can see the overview of the content in the book 116 | * I need to create subchapters with the content, and reorganize the flow, but it's hard to see how to do that, because there's so much content. 117 | * I want to have quick an actionable steps to follow, and it's a question on when and where I should introduce topics 118 | * Too much detail is overwhelming to the beginner, but there's a lot of gotchas when you get started with Auto Layout, so some inline comments is good, but it shouldn't derail the task of adding the layout 119 | * I need to then create a list of best practices for 120 | * Centering an image 121 | * 3 horizontal equal width buttons 122 | * 3 vertical equal width buttons 123 | * Custom UIButton graphics 124 | * Custom UITextField backgrounds 125 | * Where does the Pricing ScrollView + XIB fit in? 126 | * Item #'s for best practices 127 | * As I edit, I may want to move sections, but first let's focus on getting those sections where they need to be, and if they need to be cut, cut them, so I can focus on supplementals 128 | * Add reference tags to any section that I want to refer to using [kabab-notation] 129 | * Add reference to the outline, so that I can see the section 130 | * Plan 131 | * Revise the outline with the given chapter headings 132 | * Restructure into new chapters (within the sections) 133 | * Copy/paste content from each chapter into the corresponding section 134 | 135 | # November 26 2018 11:22:20 136 | 137 | * Day 70 (Monday) 138 | * 4,755 words! 139 | * Wrote about how to solve problems, and I probably need to fill this in with some better content. 140 | * I need to know more issues that students are having with their apps (Screenshots of problems) 141 | * Finishing the last section, and then starting to edit the sections/titles/headings 142 | * 3,306 words (3 pomodoros) 143 | * **Time to edit!!!!** 144 | 145 | 7,077 Chapter 1 - Auto Layout 101 146 | 25,536 Chapter 2 - Test Drive Auto Layout 147 | 28,628 Chapter 3 - Auto Layout Fundamentals 148 | 12,733 Chapter 4 - Layout 149 | 1,673 Chapter 5 - Thinking with Auto Layout 150 | 2,463 Chapter 6 - Stack Views 151 | 11,842 Chapter 7 - Table View Auto Layout 152 | 5,927 Chapter 8 - Troubleshooting Auto Layout 153 | 95,879 total words 154 | 155 | # November 25 2018 156 | 157 | * Day 69 (Sunday) 158 | * Didn't write today, was exhausted, couldn't sleep last night 159 | * Drove back to Rochester from Buffalo, post Thanksgiving 160 | 161 | # November 24 2018 08:15:29 162 | 163 | * Day 68 (Saturday) 164 | * 512 words on Troubleshooting 165 | 166 | # November 23 2018 07:55:26 167 | 168 | * Day 67 (Friday) 169 | * Finalize content 170 | * Black Friday discount: wrote an email upselling course 171 | * Created a new graphic for Learn Auto Layout Fast 172 | * Updated the course web page and checkout page 173 | * Had to figure out Teachable, since they've restructured course pages, not where things used to be 174 | * Didn't actually write today, focused on Black Friday 175 | * It's been hard to write with family and irregular schedules (and a lack of office space) 176 | * I was a bit under the weather with a sore throat in the evening and very tired 177 | 178 | # November 22 2018 179 | 180 | * Day 66 (Thursday) 181 | * Thanksgiving 182 | * Wrote 487 words 183 | * Busy cooking all day for 13 people 184 | 185 | # November 21 2018 186 | 187 | * Day 65 (Wednesday) 188 | * Last Chapter: Troubleshooting Auto Layout (+next steps) 189 | * FINAL edits 190 | * Created last outline for final trouble shooting chapter (600 words) 191 | * Wrote (200 words) 192 | 193 | # November 20 2018 09:47:47 194 | 195 | * Day 64 (Tuesday) 196 | * 5,200 words (4 pomodoros) !!! 197 | * Mostly finished, last ... sections??? wohoo!!! 198 | * 199 | * 4,631 words (3 pomodoros) 200 | * Wrote a ton!!! 201 | * Was able to focus 202 | * Had one productive pomodoro, lead to tons of progress with ideas that have been on my mind since the workshop 203 | * Trying to figure out this "layout rule" the "One View Resize Rule" 204 | * Workflow 205 | * Later start than I'd like, I ran at 7:40am, and then was wiped ... it's been a week since I last ran, my ability to run is super low 206 | * Energy level crashed post run/breakfast 207 | * Goal: 7am write for 25 minutes tomorrow 208 | * Should I cut TableView/Stack View ??? edit soon 209 | * I probably should write/edit first, and focus on core/yoga first thing, so I can get writing by 8am. 210 | * I need more "me" time in the morning to get moving, so that I can focus throughout the day 211 | * I need to get home by 8pm to eat dinner, anything later keeps me up at night 212 | * No coffee after 12pm (4pm kept me up till 1am to 615am), ~5 hours sleep wasn't enough 213 | * Get writing!!!! 214 | * QUESTION: TableViewCell vs. Table View Cell vs. "Table View Cell" vs. UITableViewCell (Match Apple's approach to their descriptions for talking about it, how does Erica talk about it? How does NSHipster talk about it) 215 | 216 | 217 | # November 19 2018 13:32:35 218 | 219 | 220 | * Day 63: Monday 221 | * 278 words 222 | * Distracted researching app analytics and ... "should I use ads to market my app?" 223 | * Thinking about video content based on questions from my 1-on-1 interviews and talking with Antonio (Real Men Real Style) 224 | * What's the opt-in? 225 | * What's the point? 226 | * Use it to advertise my upcoming Auto layout book 227 | * Thinking too much about my student 1-on-1s that I can't seem to sit still and write my book, so distracted. I need to clear my workspace, and focus. 228 | * QUESTION: If I move a Table View Cell out of a Storyboard, how do I need to create "plumbing" to make it communicate again? 229 | * I can connect a Prototype cell directly to the Storyboard, can I do that from a XIB? 230 | * Pros/Cons of using XIB 231 | * Pro: 232 | * Forces better design (separation of logic) 233 | * Con: 234 | * More code to get data back to main view controller 235 | * Should be using a delegate 236 | * Faster to prototype with direct connections in ViewController from prototype storyboard cells 237 | 238 | # November 18 2018 21:44:39 239 | 240 | * Day 62: Sunday 241 | * 139 words 242 | * Between the workshop yesterday and the number of 1-on-1's I'm exhausted and wasn't able to focus on the book 243 | * Probably a bad choice, but a good choice to get more insight 244 | * I need more time in the day, or I just need to do less things 245 | * No more meetings on Monday-Wed, just this week because of holiday 246 | * Flash sale of Learn Auto Layout Fast? 247 | 248 | # November 17 2018 22:26:01 249 | 250 | * Day 61: Saturday 251 | * 686 words 252 | * Long day, prepped for Auto Layout Table View workshop 253 | * Got to play with fast prototyping logic with images in the app bundle 254 | * Added notes based on design experience today with the workshop, need to finish this section tomorrow. 255 | 256 | 257 | # November 16 2018 23:02:58 258 | 259 | * Day 60: Friday 260 | * 168 words 261 | * I should have started writing first thing this morning, but I had a late start ... tons of meetings and emails today, took all my writing time 262 | * Yesterday I got stuck driving the wrong direction in a snow storm ... so I didn't get home till super late (1.5 hours in the snowstorm) 263 | 264 | # November 15 2018 08:36:26 265 | 266 | * Day 59: Thursday 267 | * 3,115 words (3.5 pomodoros) 268 | * Finished up the layout portion for a table view 269 | * Started the constraints portion, and some of the caveats with sizing a talbe view cell ... math is funky when you add constraints 270 | * Writing about Table View Cells 271 | * QUestion: Can I build a Playground "Table View Cell Tester" that checks a layout for common layout problems at different sizes? 272 | * Drop in a table view cell class, and it loads? 273 | * Tests edge cases/text clipping (Or checks number of rows) or constraint conflicts at different dimensions? 274 | * rows = 0 275 | * dynamic text enabled 276 | * Accessibility enabled 277 | * Constraints don't force clipping of content 278 | * Test with long titles/descriptions by looking for all labels and adding a lot of text 279 | * Changing font sizes to "simulate" dynamic text font size changes (LARGEST FONT?) 280 | * Use the large accessiblity fonts 281 | * Or can I just show people how to properly test layouts 282 | 283 | # November 14 2018 22:26:24 284 | 285 | * Day 58: Wednesday 286 | * 98 words (My day disappeared into writing emails, setting up events for a live Q&A, and planning a tutorials and a workshops) 287 | * In an effort to work on teaching some materials, as I push back the book, I've been planning workshop materials 288 | * Played with code and design today, trying to see how fast I can implement the constraints for a facebook style app with Table View cells 289 | * There's a lot of nuances to the "rules" that make up the UI 290 | * Getting the priorities straight is actually pretty complex, so I need to break this down into rules that can be reused in different user interfaces 291 | * There's the distances between UI elements with a Profile Image and two text labels stacked. 292 | * When the font is small, or there is short titles the layout rule is easy, you can simply use the bottom most one in the Table View Cell 293 | * But since all content in a Table View is dynamic, this doesn't work if your titles are long, multiline, or the font size changes with Accessibility 294 | * That's where you need to have minimum >= 8 spacing, and another constraint trying to pull everything back together (3 constraints to the content below this group of three elements ) 295 | * [Image] [ Two Stacked Views ] 296 | * [Body text or image content ] 297 | * Tomorrow, I need to focus more on writing first thing, and less on emails. I was far too distracted today with email . . . 298 | 299 | # November 13 2018 19:52:22 300 | 301 | * Day 57: Tuesday 302 | * 479 words 303 | * Rough day, for some reason I thought it would be a good idea to film videos until 11:30pm, and then eat dinner. 304 | * I couldn't sleep till 2:30am, and I was up at 6:00am out of routine ... headache + can't keep a straight thought 305 | * Was too focused on Tuesday's "blog" post that totally slipped, because there's so many nuances with Table View Cell layout 306 | * At least I have some new workflows that don't resort to math height calculations 307 | 308 | ## November 12 2018 08:15:17 309 | 310 | * Day 56: Monday 311 | * Updated the Table View outline and mindmap (400 words - 1st pomodoro) 312 | * WRITE Blog post based on Table View section (or priorities) 313 | * Mind Map Stack Views 314 | * 2013 words (4th pomodoro) 315 | * I need to demo the logic I want to cover in the Workshop, so I can create the lesson handout (and book steps) 316 | * Rules of Thumb 317 | * Never set the height of a text label, since dyanmic types will change the height, and break your constraints 318 | * Always make the UITableViewCell taller than you need 319 | * Calculate layout dimensions, adjust to fit margins 320 | * Set the content hugging 321 | * Set the compression resistance 322 | * Spacing is what matters with a UITableViewCell 323 | * Text will resize 324 | * Images will resize if you let them (aspect ratio) 325 | * Margins change on narrow vs. wide screens (16 vs. 20 vs iPad pro?) 326 | * Use the Pin tool and check "Constrain to Margins" 327 | * Never change size classes when adding constraints (only after it's completely described) 328 | * Exercises: 329 | * What is the "Name Label" and the "Quote Labbel" vertical content hugging? 330 | * Markup the diagram with content hugging and stretch priorities 331 | * Draw what should happen to the Name + Quote label layout when the cell is smaller 332 | * Draw what should happen to the Name + Quote label layout when cell is taller 333 | * [[Sketch of Name + Quote labels]] 334 | * Why should you never switch size classes before adding all the constraints? 335 | * What happens if you add a leading constraint of 16 to a TableViewCell? 336 | * Always stays 16, even though the margins change width on different sized iPhones (iPhone 8 vs. iPhone XS Max) 337 | * How do you make a multiline label in a UITableViewCell 338 | * Constrain to all 4 edges 339 | * Make number of rows: 0 (multiple lines) 340 | * How do you make a label resize based on the system font size? 341 | * Use one of apple's Dynamic Type font sizes (Heading, Body, etc.) 342 | * Check the "Dynamic Type" checkbox for "Automatically Adjusts Font" 343 | * Table View Cell's work outside into center 344 | * Oversize the height to create the workspace to add and align views to the margins 345 | * Add all the exterior constraints before connecting the interior height constraint 346 | * Make your Table View Cell resilient to adapt to any size 347 | * This will prevent unwanted errors in the future if Xcode or iOS ever change font sizes. 348 | * If you're using Automatic Table View Height, you will only see these compression and resistance issues in Storyboard, and not on the device, which will resize by default in iOS 12. 349 | * Lower the Quote Label's Vertical Content Hugging Priority from `251` to `250`. 350 | * A lower priority in the vertical direction for the Content Hugging Priority will allow the Quote Label to stretch vertically. 351 | * Now the QuoteCell should be resizable in the vertical direction to any height without causing layout issues 352 | * Set the height of the "Quote Label" to 50 353 | * Now there are compression resistance errors that you need to fix 354 | * TODO: Notes on Auto Layout Videos (Upsell or incentive for opt-in) 355 | * Create a Google Doc with notes on the Apple WWDC videos 356 | * How to get Italics with Dynamic Type in iOS 357 | * 358 | * Making an italic font requires code, it's not possible to do with just Storyboard settings 359 | * Discovering best practice for sizing (requires an understanding of compression + content hugging) 360 | * Recorded 3+ videos for a potential challenge, setup challenge landing page + content ... lots of work 361 | * Was at office 12pm - 11:30pm (yikes! screwed up my sleep schedule) 362 | * Drafted a 500 word outline for the "Workshop" and related material for the steps required when doing .xib files 363 | 364 | 365 | 366 | # Quotes Table View Solution 367 | 368 | A solution that uses .xib interface file to create a custom UITableViewCell subclass and design. 369 | 370 | The design uses Auto Layout and demonstrates how to adjust a Table View Cell with content hugging and compression resistance priorities. 371 | 372 | ## Auto Layout Code Kata 1: Quote Table View 373 | 374 | Added a challenge and potential solutions, along with just a data file. 375 | 376 | Students should be able to create a fully functional app after learning Auto Layout. 377 | 378 | 379 | ## November 11 2018 08:00:27 380 | 381 | * Day 55: Sunday 382 | * 2,119 words (3rd ish) 383 | * Had trouble working today, but decided that my launch date is going to need to push to January 11th ish. 384 | * Finder kept locking up 385 | * Typing kept locking up 386 | * Mac Maintenance 387 | * Cleared images from desktop 388 | * Cleared PRAM 389 | * Cleared SMC 390 | * Booted in Recovery Mode 391 | * Unlocked (Mounted) secure drive 392 | * Ran Disk Utility First Aid 393 | * Both levels ... don't understand why it's different 394 | * Problem with one of the Time Machine slices? 395 | * Issues are resolved after reboots 396 | * Quick Look is working again 397 | * So far no issues ... but my F key stopped working in Gmail... 398 | * 1711 words: 2nd pomodoro 399 | * 906 words: 1st pomodoro 400 | * QUESTION: Is there any way to "center" a fullscreen app in Split view? 401 | * I'd really like to have two Multimarkdown views in split view, and one centered, with the other off to the side. 402 | * Can I make my own "split view controller" for other apps? 403 | * The other option is to allow a fullscreen app as a panel/auxillary view to a fullscreen app 404 | * QUESTION: Does Multimarkdown composer use Panels? view debug it 405 | * BUG: Multimarkdown/Mac sometimes typing stops working ... in Multimarkdown composer, Spotlight ... what's going on? Do I need to reinstall Mac? 406 | 407 | 408 | ## November 10 2018 12:37:06 409 | 410 | * Day 54: Saturday 411 | * Finishing up the section on Layout 412 | * Still need some demo code, but I don't want to spend more time working on demo's when I can get the gist of the concept down 413 | * May be moving some sections around, or removing them from the book, so I don't wnat to over commit, until I can evaluate what's going where 414 | 415 | ## November 9 2018 12:20:10 416 | 417 | * Day 53: Friday 418 | * 850 words 419 | * Writing at Joe Bean Coffee Roasters 420 | * Question: Can you add accessibility hints and labels to Bar Button Items in Storyboard file? 421 | * I don't see it???? 422 | * YOu can add a button instead, which wraps a barbutton item around a button, you have to click again to add accessibility 423 | * QUESTION: Does this work with accessibility? 424 | * QUESTION: How do you describe destructive buttons in accessibility? 425 | * i.e. this button doesn't save your story? 426 | * QUESTION: How do you change the order in which buttons are highlighted by VoiceOver 427 | * Seems to be based on the height and works it's way right to left (direction of language) 428 | 429 | 430 | ## November 8 2018 16:21:12 431 | 432 | * Day 52: Thursday 433 | * 281 words (Spent all day working on Table View workshop notes) 434 | * Will be translating ideas into words for the Table View book 435 | * Capturing key concepts/bugs to avoid/beginner mistakes 436 | * Spent today planning new workshop details 437 | * Topics 438 | * Email sequence 439 | * Email announcements 440 | * Content and timeline 441 | * Next steps 442 | * Potential book title 443 | * **Easy Storyboard Design** 444 | * How to make beautiful iOS apps with Auto Layout . . . 445 | * The stress free guide to making beautiful iOS apps using Auto Layout (in Xcode 10) 446 | * Easy Auto Layout Design 447 | * How to make beautiful iOS apps with Storyboards 448 | 449 | 450 | ## November 7 2018 13:25:33 451 | 452 | * Day 51: Wednesday 453 | * 3,663 words (4th pomodoro) 454 | * 3,068 words (3rd pomodoro!) 455 | * A few more days, cutoff is Sunday, November 11th. 456 | * I feel that these sections need to be fleshed out, but they're worth it to uncover the nuances of layout, which is a precursor to Auto Layout 457 | * And then I need to dive into the basics of resizable Table Views, since that's in almost every app design 458 | 459 | ## November 6 2018 22:21:33 460 | 461 | * Day 50: Tuesday 462 | * 2,993 words (5 pomodoros) 463 | * Finishing up layout examples 464 | * Need to wrap up the final chapters still 465 | * TODO TableView + 30 day challenge 466 | 467 | ## November 5 2018 11:05:40 468 | 469 | * Day 49: Monday 470 | * 3,910 words, 5 pomodoros after a late start 471 | * Writing about why layout is hard 472 | * 1st Pomodoro: I realized that I didn't do a mindmap for the new chapter 473 | * Talked through the chapter mindmap and ideas 474 | * 2nd Pomodoro: Updated the Outline for the chapter 475 | * [[DUPLICATE: my Xcode Bug: Double Click Randomly Zooms in/out of UI]]]) 476 | * ([[Duplicate my Xcode BUG: No zoom in macOS Storyboard files]]). 477 | * [[TODO: Should I use the term image, UIImageView?]] 478 | 479 | 480 | ## November 4 2018 11:07:09 481 | 482 | 483 | * Day 48: Sunday 484 | * 1609 words 485 | 486 | ### Table View Notes 487 | * Resources 488 | * 489 | * 490 | * SF Font is different in iOS than design tools 491 | * Use the Sketch plugin to help get alignment better 492 | * Heights/widths of fonts doesn't seem to match exactly, so you'll need to design interfaces accordingly 493 | * Spacing and relative sizes is the way to go, let fonts self size themselves 494 | * Static table views only work with the UITableViewController 495 | 496 | * Use the margins that Xcode provides 497 | * There's a bug when switching Size Classes, select a view, update to fit content size, update frame to resize to fit in new screen bounds 498 | 499 | 500 | 501 | ## November 3 2018 11:56:40 502 | 503 | 504 | * Day 47: Saturday 505 | * 1098 words 506 | * A bit of a late start today, but I'm excited to be nearly done, though I need to cover TableView Cells and Layout, since those are two keey concepts in any iOS App 507 | * Question: Asset Catalog vs. asset catalog vs. "Asset Catalog" ? which one? 508 | * XCODE BUG: Deleting Asset Catalog cannot be undone 509 | * There should be an undo for this project change 510 | 511 | ## November 2 2018 22:34:47 512 | 513 | 514 | * Day 46: Friday 515 | * 888 words 516 | * Researched the buggyness of TalbeView Cells in Storyboard and .xib files 517 | * Super buggy behavior when moving around constraints 518 | * Changing size classes is a world of pain 519 | 520 | ## November 1 2018 07:33:42 521 | 522 | 523 | * Day 45: Thursday 524 | * 466 words (1st pomodoro) 525 | * 1308 words (3rd pomodoro) 526 | * Spent time researching accessibility 527 | * Spent a lot of time opening/closing accessilbity inspector, bugs galore =/ 528 | * 529 | * Bugs 530 | * ## BUG: Accessiblity Inspector is Very Buggy 531 | * 532 | 533 | ## October 31 2018 07:35:43 534 | 535 | * Day 44: Wednesday 536 | * 3,593 words today, slow start, but I took off when I started a new section of the book. 537 | * I'll need to go back and refactor a bit, but it's getting the core concepts down, and the headings which will help me organize later. 538 | * 1121 words (1st pomodoro at 11:00:48) 539 | * 1700 words (2nd pomodoro at 11:53:23) 540 | * 1951 words (3rd pomodoro at 12:00:00) 541 | * Researched preview bugs 542 | * 3,452 words (4th pomodoro at 13:15:49) 543 | * Bugs encountered 544 | * XCODE BUG: Multiple Preview Devices Slows Down Storyboard constraints dramatically 545 | * XCODE BUG: Cannot zoom into/out of a Storyboard file for Mac apps 546 | * XCODE BUG: Changing fonts on Accessiblity Inspector in iPhone Simulator Messages causes it to fail to render correctly when toggling between… it squashes messages. 547 | * 548 | * Side tracked today 7am-10am … even after setting up my desk, coffee, and breakfast … Mac update sent me down the rabbit hole (again!) 549 | * I need to **disable WIFI/internet** when I write in the morning, it's too distracting when an update automatically starts. 550 | * I was a bit side tracked when Xcode automatically updated … and wanted to see the changes 551 | * … that took me to the App Store, and then I read some bad/good reviews … so I decicded to write my Xcode 10 review 552 | * That lead to me posting a new blog post on Xcode 10 being the gold standard … 553 | * I probalby need to do a 10-20 things I love about Xcode 10 post with Gifs + Videos 554 | * Back is doing much better, I can sit for way longer, and move more! 555 | * Research 556 | * Safe Areas 557 | * View Controllers 558 | * Device bounds 559 | * Changing values in your own interfaces 560 | * Margins 561 | * Margins are the original boundary areas that came before Safe Areas 562 | * Guides 563 | * QUESTION: ARe these Guides entirely visual, or are they related to margins? 564 | * 565 | 566 | ## October 30 2018 12:02:26 567 | 568 | * Day 43: Tuesday 569 | * 890 words today 570 | * Spent a lot of time writing some new scripts to help track word count and edits 571 | * 7,077 Chapter 1 - Auto Layout 101.md 572 | * 25,536 Chapter 2 - Test Drive Auto Layout.md 573 | * 20,998 Chapter 3 - Auto Layout Fundamentals.md 574 | * **53,611 total** 575 | * Late start to writing due to sending out an email for my weekly email 576 | * Played with iTerm2 577 | * Setup the iTerm2 to drop down from the top 578 | * Adding commands to my bash profile to give me word counts, so I can just type a command "words" to get stats on words changed, and total counts 579 | 580 | $ words 581 | Words added: 890 582 | Words removed: 0 583 | Word diff: 890 584 | 585 | 7077 Chapter 1 - Auto Layout 101.md 586 | 25536 Chapter 2 - Test Drive Auto Layout.md 587 | 20998 Chapter 3 - Auto Layout Fundamentals.md 588 | 53611 total 589 | 590 | 591 | * Now I can see what kind of work changes I've done from the last commit 592 | * Editing is slower, so being stuck in editing due ot the Pin Tool exercise has been blocking progress … I'm going to skip rest for now, and keep moving to the rest of the outline 593 | * Updated to use iTerm2 from Terminal, playing with settings to better configure for my usage 594 | 595 | ## October 29 2018 10:54:18 596 | 597 | Got stuck editing and changing text … wordcount isn't accurate since I removed text. 598 | 599 | * Day 42: Monday 600 | * Wrote 179 words 601 | * Edited words in a complex area for adding constraints in Pin Tool 602 | * Didn't do as much writing because I've been stuck in this "editing" section and I need to be writing. 603 | * `wc -w C*.md` = wordcount for all "Chapter .md" 604 | 605 | 52,411 total 606 | 607 | * Tomorrow: Go over how to update the layout from the simple method to use the baseline alignment after the majority of the constriants were set 608 | * Go over how you can elverage stack views for the same layout 609 | 610 | ## October 28 2018 08:22:11 611 | 612 | * Day 41: Sunday 613 | * ~750 words (lots of edits around the bottom sections) 614 | * Hard to trakc, need to track total WC before/after starting, otherwise it's not linear right now. 615 | * 3254 to bottom 616 | * Question: "`Right-click` + drag" technique … how do I format Right-click and drag? Is this the official name? docs talk about Control Click … but I feel that's not what the beginner is going to be using. Right-click is more descriptive, and there are multiple ways to click… 617 | * Question: which tweet did I write after WWDC 2018? About Xcode 10, apparently it's hanging on the wall at Apple in the Swift hallway. 618 | * Is it "Storyboard" or "storyboard" or storyboard? or .storyboard? 619 | * 620 | 621 | ## October 27 2018 09:23:19 622 | 623 | * Day 40: Saturday 624 | * 776 words (1st pomodoro) 625 | * Started at 9:10am today 626 | * XCODE BUG: Constraint moves around the screen to top or bottom of the UI when trying to select it (edit second click misses) 627 | * "Align tool" for "Align Menu" 628 | * "constraint issue indicator" or "Auto Layout issue details pane" 629 | * Read the [Xcode Help Guide](https://help.apple.com/xcode/mac/10.0/#/devc8c2a6be1) 630 | 631 | 632 | ## October 26 2018 08:16:55 633 | 634 | * Day 39: Friday 635 | * 1944 words 636 | * Researching compression reistance and hugging 637 | * Ways to define width 638 | * Equal width to another label 639 | * Leading and Trailing edges 640 | * Equal Leading edge 641 | * Equal trailing edge 642 | * Constraints are "associative?" 643 | * You don't need every combination, you just need to express a rule once, no reason to have duplicate rules that mean the same thing 644 | * Always try and simplify the rules ot the bare miniumu 645 | * Less errors 646 | * Easier to debug when issues arise 647 | * Less work, faster to design and layout 648 | * The bigger view becomes the Stuctural view 649 | * UITextField is taller than a default font UILabel 650 | * October 26 2018 15:32:23 651 | * Block UI 652 | * Resize to fit (makes constraints easier to add) 653 | 654 | ## October 25 2018 07:17:37 655 | 656 | * Day 38: Thursday 657 | * 1107 words 658 | * Tons of research and a coulbe of Apple bugs in Xcode slowed progress ... trying to figure out best practice for baselines and alignment with the Pin Menu ... applying via exercises 659 | * Idea: 660 | * Write a script to search for all keywords and link to documentation 661 | * Can I search documentation based on keyword? easy link creation? 662 | * Write a script to make all instances of UILabel become `UILabel` 663 | * Question: Is it UILabels or UILabel's in the sentence: "8. Select the next two UILabels and UITextFields"? 664 | * and how would that work with linking to the documentation? 665 | * QUESTION: When should I use "UIButton" vs. button ... or label instead of "UILabel" or image instead of UIImageView, or image view? 666 | * QUESTION: Should I use "Quotes" for Notes, or do I need some other kind of Markup for the book? 667 | * Mattt using a "liquid" %%info%% tag on NSHipster 668 | * Playing with size and height for a UITextField + UILabel alignment 669 | * QUESTION: Which alignment line should I use? 670 | * What's the difference? 671 | * TODO: Get the reader to think about bigger elements as "structural" 672 | * QUESTION: Why does the alignment in a UITextField seem wrong? 673 | * TIP: NEVER USE Reset to suggested constraints in practice, it's not multiple device aware, and adds constraints that do not work! 674 | 675 | XCODE BUG: Reset to Recommended Constraints makes constraints that break on multiple devices, it's not adding "good" and "safe" constraints 676 | 677 | XCODE BUG: UITextField text position clips and is offset from actual position on iPhone Simulator/Device 678 | 679 | XCODE BUG: Baseline between TextField + Label, Top constraint set, and then Baseline set, Xcode states wrong thing "Missing Constraints: Need constraints for: Y Position" .... but the solution is to remove the top constraint, because it conflicts with the baseline to the UITextField. 680 | 681 | QUESTION: Shoudl I center align a Label and a TextField or should I baseline align? 682 | 683 | October 25 2018 10:26:31 684 | 685 | FAIL: Align tool to add constraints is causing duplicate constraints being added to the last in the row. ... had a duplicate view stacked on top of each toher ... that was confusing two "Last Name" labels 686 | 687 | 688 | 689 | ## October 24 2018 08:19:44 690 | 691 | * Day 37: Wednesday 692 | * Starting after 8am, had a lot of stretches and a super tight knot this morning 693 | * 4,595 words (6th pomodoro) with exercises for keyboard shortcuts and selection 694 | * Tons of progress today after getting more sleep 695 | * I tried to move around more, and new positions so my back could relax without locking up as much 696 | * Tweaking and expanding upon my article for ways to add layout constraints ... got me going on additional navigation help in Storyboard 697 | * 3,034 words (4th pomodoro) 698 | * 971 words (1st pomodoro) on skipping rotation support 699 | * Questions 700 | * Should it be "Right-click" "right click" `right click` or `Right Click`? 701 | * Should I always use `UIButton` when I say button? 702 | * I should match this for all UIControls and UIViews 703 | * Pre-release the 7 ways to add constraints + clicking on the storyboard canvas 704 | * Should it be "Safe Area" or Safe Area or `Safe Area` 705 | * Where do I draw the line between code, proper name, and concept? 706 | * Apparently a leading constraint + center horizontally constraint is enough to make the UI fit edge to edge, but I still prefer having a leading and trailing constraint. 707 | 708 | ## October 23 2018 12:55:35 709 | 710 | * Day 36: Tuesday 711 | * 1865 words (3 pomodoro's) 712 | * Added content on working with Stack Views (multiple methods) 713 | * Added post on content on colors + images from blog 714 | * Exploring examples with labels + content hugging/stretching 715 | * Wanted to write more, but back pain and constant long stretch breaks killed my energy after about 3 716 | * Found Keith's Auto Layout book launched 717 | 718 | ## October 22 2018 15:25:38 719 | 720 | 721 | * Day 35: Monday 722 | * Started today looking at the chapter outline and trying to make some decisions on the amount of content. 723 | * I may need to extend release date, if I'm planning to market the book, I don't think I have enough time schedule to finish content, edit, and promote 724 | * Creating the outline took more time than I expected, and I'm still not happy with it, because it doesn't cover everything that I want, which is why this should be a series of books. 725 | * Currently I'm feeling pulled into too many directions with the contract work, meetings, visitors, and book 726 | * I need to simplify, and focus, make Monday's book day, and Tuesday's contract day, that way I can better focus 727 | 728 | ## October 21 2018 23:17:31 729 | 730 | * Day 34: Sunday (Brick City Weekend) 731 | * 852 words (15 minutes) 732 | * Another long day, tons of activities ... late night writing. 733 | * Tomorrow I plan to get writing sooner, since this week I want to make sure that i"m making progress towards launching this book. 734 | * Writing earlier is very easy for getting things done, but I overslept because I didn't sleep well the night before due to back pain. 735 | 736 | ## October 20 2018 22:53:19 737 | 738 | 739 | * DAY 33: Saturday (Brick City Weekend) 740 | * 787 words (10 min) 741 | * Family and friends visiting, lots of walking on campus, not really any time to write. 742 | 743 | ## October 19 2018 23:20:20 744 | 745 | 746 | * Day 32: Friday 747 | * 1091 words (brain dump before bed) 748 | * Late night, Steph's birthday cooking workshop + friends in town for Brick CIty Weekend 749 | * Gabe cooked dinner for Steph 750 | 751 | ## October 18 2018 20:33:15 752 | 753 | 754 | * Day 31: Thursday 755 | * 896 words (10 minutes) 756 | * Friends came in before I could finisher earlier tonight, so I wrote the last 500 words before getting in bed. 757 | * Spent all day working on contract work, friends coming in ... now 758 | * 400 words (10 minutes) 759 | ## October 17 2018 21:39:01 760 | 761 | * Day 30: Wednesday 762 | * Total: 36,373 words 763 | * Chapter 1 - Auto Layout 101 764 | * 7,077 words 765 | * Chapter 2 - Test Drive Auto Layout 766 | * 25,536 words 767 | * Chapter 3 - Auto Layout Fundamentals 768 | * 3,760 words 769 | * 1069 words today (1 pomodoro) 770 | * Talked about demo + iterations (Creative Selection book by Ken Kocienda) 771 | * Wrote about styles of apps and content flows 772 | * Started to write about the 5 types of app layouts 773 | * 30 days in a Row of at least 750 words! 774 | * With the contract work and research on Swift, I haven't had as much time as I'd like to work on the book 775 | * I spent a lot more time working on the outline, but I havne't even written about half the things in the outline 776 | * Much of my time was spent on the beginning sections, which makes me wonder ... how should I proceed? 777 | * More writing? 778 | 779 | ## October 16 2018 21:48:34 780 | 781 | 782 | * Day 29: Tuesday 783 | * 780 words (10-15 minutes) 784 | * Late start today ... been trying to finish contract work, taking time to research and implement with TDD + bluetooth 785 | 786 | ## October 15 2018 11:00:36 787 | 788 | * Day 28: Monday 789 | * Stats Update 790 | * 3 chapters 791 | * 7,077 "Chapter 1 - Auto Layout 101.md" 792 | * 25,536 "Chapter 2 - Test Drive Auto Layout.md" 793 | * 1,952 "Chapter 3 - Auto Layout Fundamentals.md" 794 | * **34,565 words** 795 | * Command: 796 | * `wc -w C*.md` 797 | * Word count of all the markdown files starting with "C" 798 | * 1773 words (1st pomodoro after extensive mind map + outline research) 799 | * One pomodoro writing and brain dump around size classes, designing for one device, layout for one device, and creative selection 800 | * Keep it simple explored 801 | * I spent a lot of time doing research this morning as I worked on fleshing out the updated Outline for Chapter 3, it feels like a lot of topics that I need to cram in one chapter, and I'm running out of days for this 30 day challenge. I really need to write, more, but I have a contract job to also work on 802 | * It's hard to work on more than 1 thing at a time! Especially when you write daily 803 | * Back is doing better, but not great, not flexible today, taking regular breaks with Super Easy Timer 804 | * Created the Chapter 3 mind map 805 | * May want to split book into more books? 806 | * Depending on how long this Chapter 2 or 3 becomes … we might want to restructure to make it easier to get started, but I feel that we still need to cover many of these topics (including debugging) 807 | * Responsive vs. adaptive vs. fluid vs. resizable 808 | ## October 14 2018 11:36:41 809 | 810 | * Day 27: Sunday 811 | * 762 words (1st pomodoro in car) 812 | * 813 | * Driving back from PA to Rochester 814 | * Hurt my back moving a bed, and I have hardly been able to move 815 | * Re-injured my back from when I hurt it snow shoveling heavy snow in March 2018 (hit curb with shovel) 816 | * Didn't sleep well, but trying to sit good in the car with some back support 817 | ## October 13 2018 07:31:29 818 | 819 | * Day 26: Saturday 820 | * 507 words (1st pomodoro) 821 | * Spent a lot of time researching Auto Layout Demystified. 822 | * I don't really like the examples, as they don't provide enough of a guide through the materials. 823 | * I'm trying to figure out if my book content is too long, or if it's a good length ~30,000+ words 824 | * Researching how to do percentage based layouts 825 | * 0.25 works, .25 doesn't when editing layout multipliers . 826 | * BUG: Ratio of `.1` resets to 1 827 | 828 | ## October 12 2018 22:35:12 829 | 830 | * Day 25: Friday 831 | * 867 words 832 | * I spent 15 minutes writing, late, time for bed. 833 | * I need to write first thing in the morning, it's really hard, but I slept in , and never got time to writing with all the family things going on here in PA. 834 | * Long day with family, visited my Grandma and made her smile and laugh (she has dementia) 835 | 836 | ## October 11 2018 10:40:11 837 | 838 | 839 | * Day 24: Thursday 840 | * 1026 words (2nd Pomodoro) 841 | * Technical steps to make these adjustments on the Safe Areas 842 | * I always find this part a little hard to understand, and I feel like there's more to discuss, but I'm not sure exactly what that is 843 | * TODO: We can add some post-processing scripts to add insertion points like `[[2nd chapter]]` as replacement for %%Auto Layout 101 Chapter%%, or some kind of references (Does some piece of software exist?) 844 | * What is ObjC using? 845 | * What is NSHipster using? 846 | * Would this be Liquid? 847 | * 422 words (1st pomodoro) 848 | * Lots of research on the Safe Area view challenge 849 | * Driving home to PA (6 hours … in rain) 850 | * Writing while Steph drives … got to get my words in, I spent this morning working on TDD with mocking URLSession 851 | * 852 | 853 | ## October 10 2018 07:27:06 854 | 855 | * Day 23: Wednesday 856 | * 921 words (1st pomodoro) 857 | * I'm still not feeling like I've written enough for the book, there's so much to talk about, but maybe this book should be shorter and more approachable 858 | * Should I split? I just need to keep writing … it might be more than 30 days of writing … 859 | 860 | ## October 9 2018 15:25:12 861 | 862 | * Day 22: Tuesday 863 | * 1153 words (very technical instruction for adding constraints to labels) 864 | * Slow start today, got distracted writing email for audience, took away focus 865 | * Sent me down tangents for Jekyll blog hosting with Github like Mattt at 866 | * If I have time, I'll try and write the remaining words tonight … need to get some progress … on being outside in sun, and then some Bluetooth / Unit tests! 867 | 868 | ## October 8 2018 08:01:00 869 | 870 | * Day 21: Monday 871 | * 1760 words (2nd pomodoro) 872 | * Added more details, reworked some of the example by expelling it again 873 | * Tested out adding the constraints to make sure I'm giving the right advice. 874 | * 991 words (1st pomodoro) 875 | * Went to bed at 11am, got up at 640am (more sleep!) 876 | * Feeling like I have more energy, I need to get to bed on time. 877 | * Progress Summary 878 | * Over the past 7 days (October 1st - October 7th) I wrote 8,852 words, which was under my target of 10,000 words. 879 | * I need to be writing 1400 - 1500 words per day to keep that target 880 | * Current total: 26,953 words 881 | * Chapter 1: 7,077 882 | * Chapter 2: 19,876 883 | * Chapter 2 may get split into parts, to make it more concise, there's a lot of teaching moments, but we also need a "speed coding" demo of adding constraints, instead of having this long drawn out instructions 884 | * 34 minutes to read 7000 words … 885 | 886 | ## October 7 2018 08:58:42 887 | 888 | * Day 20: Sunday 889 | * 1191 words 890 | 891 | ## October 6 2018 15:43:21 892 | 893 | * Day 19: Saturday 894 | * 1066 words 895 | * A bit tired after a long 8 mile run at a faster pace than normal (9:30 pace) … normally I do 10:30 or 12:00 for the 8+ mile runs 896 | * Getting into breaking apart an Auto Layout error message 897 | * Thinking about how a tool like [WTFAutoLayout](https://github.com/johnpatrickmorgan/wtfautolayout) might work in conjunction with a UIStoryboard file … to pull in names of UI elements, which might help visualize what's right/wrong 898 | * [Sparse](https://github.com/johnpatrickmorgan/Sparse) is a simple parser-combinator library written in Swift. 899 | 900 | 901 | ## October 5 2018 07:30:05 902 | 903 | * Day 18: Friday 904 | * 1099 words 905 | * Wrote about editing constraints, and a new trick I learned using the ALT key for views on top of each other 906 | * Took some extra time to figure out where I left off … since there's some sections I wanted to revise, and tangents that made it hard to just pickup 907 | * Moving some sections down to work on the next time. 908 | 909 | ## October 4 2018 07:06:43 910 | 911 | * Day 17: Thursday 912 | * 1314 words 913 | * Great start this morning, trying to finish up the UI, and I dig into more gems 914 | * There's a lot of teaching moments in this UI, which I think it's going to make a lot more sense to readers 915 | * Learning why some things snap, and then how to resolve them is really important 916 | * Learning about the decisions you need to make is also important 917 | * 1591 words (combined) 918 | * Making edits, and researching how to properly add these constraints … turns out if you want it to match the size you just add all constraints, and after you add all 4 dimensions (if the layout is defined for the interface, it'll snap to fit) 919 | * Now if you don't want that behavior, you can hold ALT while holding shift (after a diagonal drag) and you can add all the constraints using the current layout positions! 920 | * NEAT … otherwise I was going to file a bug, because it's annoying that sometimes views will take on the actual value versus the canvas value 921 | * There's two thoughts here … one, you're trying to make a non-matching UI go where you want it to go 922 | * Two, you're trying to constrain a layout in place, and to do that you want to use the current canvas values. 923 | * For the most part when you add a single constraint, it wion't try to update your constraints, but when you add multiple it decides to behave differently 924 | * More research (3rd + 4th pomodoro's into XML parsing Storyboards) 925 | * FUTURE: Rename all the identifier programmatically to help diagnose layout problems 926 | * Debugging Auto Layout constraints … setting breakpoint doesn't give you enough steps, needs a better guide 927 | ## October 3 2018 07:16:03 928 | 929 | * Day 16: Wednesday 930 | * 849 words 931 | * Investigated some of the behaviors of the constraints when you add and remove them (at the same time versus individually for a label) 932 | * Need to investigate intrinsic content size and custom views … I don't believe you can have the same behavior as the UISwitch, but I could be wrong. 933 | * Need to talk more about the negative and the positive values of constraints. By default the storyboard will add constraints in such as way that they always default to a positive value (by flipping the relationship) 934 | * Need a tutorial + image on how this works, and how to visualize the constraints … because the system fails to work well when you have a UITextField on top of a UIImageView (for styling purposes). 935 | * And then it becomes confusing to the user … their first occurrence of a negative constraint. 936 | 937 | ## October 2 2018 12:27:39 938 | 939 | 940 | * Day 15: Tuesday (Steph's Birthday) 941 | * 1066 words (first pomodoro) 942 | * Late start today because I got side tracked with writing an email on iOS jobs 943 | * Practiced typing today, I need to formalize what deliberate practice I'm going to work on … and how to measure … I'd like to apply it to Auto Layout, but I also feel like I need to research more deliberate practice techniques 944 | * Wrote about 200 words, editing some of yesterday's flow to introduce running the iPhone simulator sooner, and then checking … and then Preview. 945 | * One thing I notice from typing practice is that it's more fluid and easier to type without as many errors … feels more natural. I should keep practicing, but I should move practice to a low energy time of day, rather than the morning. 946 | * Xcode 10.1 doesn't fix the issue that I thought it mentioned with the Control Drag, I don't see any difference in behavior from Xcode 10 … and it doesn't feel different. 947 | * The Diagonal drag is still the preference when you're designing user interfaces. 948 | 949 | ## October 1 2018 12:51:02 950 | 951 | 952 | * Day 14: Monday 953 | * 2285 words in 2nd pomodoro (combined) 954 | * 1115 words in 1st Pomodoro (adding vertical constraints) 955 | * I've been writing daily for 2 weeks! 956 | * Crazy! 957 | * Feels good to make progress … over 15,000 words written for the first draft 958 | * Goal: 2-3 pomodoros … let's go! 959 | * Transcribing notes from the video still … this will probably make up most of the bookΩ 960 | * Theres' only so much that you can type … 961 | 962 | 963 | 964 | ## September 30 2018 07:36:03 965 | 966 | 967 | * Day 13: Sunday 968 | * At Steph's mom's house … hiding in the laundry room writing. 969 | * 901 words 970 | * Mentally distracted, hard to focus … not enough sleep 971 | 972 | ## September 29 2018 08:45:31 973 | 974 | * Day 12: Saturday 975 | * 1160 words 976 | * I still haven't described how to add the constraints … everything has been supplemental to the constraint process 977 | * We've done the coloring, now we need to talk about tconstraining 978 | * Some research into "Reset to Suggested Constraints" not being screen aware (iPhone X is broken constraints) 979 | * Easy way to mess everything up! 980 | * Found more bugs in Xcode … growing list 981 | * Got a little distracted this morning, but we need to spend another session writing 982 | * A bit tired today, late night after frisbee … late coffee/kombucha (black tea) 983 | 984 | ## September 28 2018 10:26:56 985 | 986 | * Day 11 987 | * 3456 words (4 pomodoro's) 988 | * Finally dedicated 2 hours to write, instead of my "15 minutes" or "30 minute" sessions … when I have time I can write! 989 | * Good content, lots of ideas for workbook supplementals and video supplements 990 | * Brought in a reference to dropping support for rotation (new blog post idea) based on ATP #292 with Marco dropping support for iPhone rotation in [Overcast 4.1](https://marco.org/2018/03/13/overcast41) 991 | * More words written, this chapter is getting long … just to explain how to add the top, bottom, leading, and trailing constraints 992 | 993 | ## September 28 2018 07:45:42 994 | 995 | * Day 11 996 | * 1700 words after 2 pomodoros … this is going to be long 997 | * Added more words … figured out my days were wrong. Not sure how that happened … but it didn't match my calendar. 998 | * Trying to restructure how I teach this content … based on video, but also based on how to simply show some of the features. 999 | * Percentage based sizing as a challenge 1000 | * Show Canvas > Show Layout Rectangles / Show Bounds later … it's not as clear as changing the color of a view 1001 | 1002 | 1003 | ## September 28 2018 07:08:33 1004 | 1005 | * Day 11 1006 | * I need to spend more time writing … so I'm blocking off more of my day to focus on layout changes. 1007 | 1008 | ## September 27 2018 08:11:07 1009 | 1010 | 1011 | * Day 10 1012 | * Writing for 25 minutes at 7:50am 1013 | * 1147 words 1014 | * I'm watching my video that I recorded, and using it for inspiration on the topics that need to be discussed. 1015 | * I need to finish watching the video to figure out how to explain the step by step, and caveats for differences in Xcode 10 from Xcode 9 … since it's very different. 1016 | 1017 | ## September 26 2018 22:27:09 1018 | 1019 | 1020 | * Day 9 1021 | * 861 words 1022 | * Recorded a 49 minute video on adding constraints that I need to transcribe and make it the chapter notes. 1023 | * Today was off because I met with other iOS developers and didn't get a chance to finish my writing in the morning, like I have been enjoying. 1024 | 1025 | ## September 25 2018 08:05:46 1026 | 1027 | * Day 8 1028 | * 1303 words 1029 | * Installed Mojave yesterday 1030 | * Playing with the dark theme 1031 | * Super Easy Timer needs to be udpated to use the new dark theme APIs, so I can automatically switch the UI theme (3 themes included) 1032 | * I need to design my own theme for Multimarkdown + Xcode 1033 | * I never seem to like the dark themes that other people make … so we'll have to investigate what colors will look good (especially for Multimarkdown) 1034 | * I need to record myself using the new Xcode 10 as I add constraints, and then turn that into a chapter 1035 | * Xcode 10.1 looks like it's going to make my "diagonal drag" unnecessary 1036 | 1037 | ## September 24 2018 08:19:51 1038 | 1039 | * Day 7 1040 | * 1558 words 1041 | * Setup a new private Github to track changes to the book manuscript 1042 | * Writing first thing in the morning (7:50am - 8:20am) 1043 | * Way easier to write on a fresh mind, and way more ideas 1044 | * Workbook ideas using "furniture arranging" to learn Layout 1045 | * Instagram layout to adapt the design to the bigger screens 1046 | * Or a simple button resizing example 1047 | * Cut out and layout the designs on the workbook iPhone 8 screen and the iPhone Xs and iPhone Xs Max screens. 1048 | 1049 | ## September 23 2018 19:37:14 1050 | 1051 | * Day 6 1052 | * 888 words 1053 | * I'm exhausted today after being in the sun all morning and early afternoon playing ultimate frisbee 1054 | * I set the timer, wrote the first set of words, and then started a second and kept going. 1055 | * It felt good to start making some more progress, even if the writing quality is low right now, it's more important that I start to think through the different concepts, so that I can start to piece together the information that a beginner is going to need to know 1056 | 1057 | 1058 | ## September 22 2018 21:24:12 1059 | 1060 | * Day 5 1061 | * 1249 words 1062 | * Got into talking about my experiences demo'ing bomb dodge, and howimpratnt it is to do usability testing to catch issues before you invest tons of time into features 1063 | * I'm again tired, trying to write at the end of the day because of all the activities 1064 | * Today I ran my fastest 5K race at 21:37 … close to a 7'00" pace … but I haven't looked at any of my stats yet 1065 | * We went to the market, and some food fests around Rochester 1066 | * I don't really feel like writing, and I just want to get more sleep. 1067 | * Tomorrow I'm getting up early, to write, so I'll definitely start to dig more into things … and I'm probably going to move writing to my 1st hour, like I wanted to, but haven't been able to do because of a contract deadline. 1068 | * That'll make it easier to sit and write, and not have to waste time … not writing the book. 1069 | * Also, I'm super behind on finishing the chapters … so these chapters may or may not be short… we'll see. 1070 | 1071 | ## September 21 2018 22:41:11 1072 | 1073 | * Day 4 1074 | * 787 words 1075 | * Tired, have a 5K race tomorrow … setting a timer for 5 minutes and then going to bed 1076 | * Did another 5 minutes … got to 620 … why not type a bit more … =) 1077 | * Going for a 22:00 5K time … 7'00" pace is my target 1078 | * Spent all day on contract work … and just got back from a late night Ultimate Frisbee game 1079 | * Had some fun programming a simple App Store keyword tool using NSLinguistics and text … very fun ideas for some projects 1080 | 1081 | 1082 | ## September 20 2018 22:01:52 1083 | 1084 | * Day 3 1085 | * 798 words - not great writing, but it's a start, and it's getting me to put in time and focus 1086 | * I need to start writing earlier on the day … the contract work is interrupting my flow, and it's harder than I thought it would be. 1087 | * Spent all day on contract work … behind where I need to be, figuring out how to call Swift code from Objective-C 1088 | * Trying to fix buggy logic 1089 | 1090 | 1091 | 1092 | ## September 19 2018 21:57:50 1093 | 1094 | * Day 2 1095 | * 869 words 1096 | * Inspired after watching "Dawn Wall" with Tommy Caldwell who scales the Yosemite "impossible" face called Dawn Wall. 1097 | * 6 years working on a goal 1098 | * Spring + Fall spent figuring out the traversals to make one unified climb 1099 | * Refactored the outline, it didn't feel right, but now I think I'm on the right track with the topics 1100 | * Updated sections, reordered to make more logical 1101 | * Trying to make it as easy as possible to get something working 1102 | * Then we'll explain more complexities … don't talk about what we don't need to talk about yet. 1103 | 1104 | ### New Section 1 Chapters 1105 | 1106 | 1. Auto Layout 101 1107 | 2. Test Drive Auto Layout (Get in and do something) 1108 | 3. Auto Layout Fundamentals 1109 | 4. Layout (You need more practice with layout before you constrain) 1110 | 5. Thinking with Auto Layout (Paper prototyping? prep for design?) 1111 | 1112 | ## September 19 2018 17:24:33 1113 | 1114 | * Started writing some ideas … busy day working on contract work and UI testing … still feels like docs aren't fleshed out … I have yet to find the updated Apple docs 1115 | 1116 | 1117 | 1118 | ## September 18 2018 21:58:07 1119 | 1120 | * Day 1 1121 | * Wrote 804 words for Chapter 1 1122 | * Starting point, but I'm starting to think that my daily word count is going to be closer to 2,000 words. 1123 | * I didn't really get into the topic, and my outline doesn't quite flow 1124 | * I'm going to cleanup Chapter 1 outline once more, and then hit the ground running 1125 | * Part of the process for writing … and doing this challenge is to push myself to think, eat, and breathe Auto Layout, so that I can write easier 1126 | * The more I consume the material, and refine my thoughts, the easier it will be to write this book 1127 | * Reading Essentialism has been amazing, habit's are what are going to make this book write itself, I just need to make sure I write daily … 1128 | * I'm going to hang up a calendar that I can cross off each day I hit my word count … it's ok if I only write 50 words, as long as I continue the habit, it will continue to build, and my subconscious will be writing the book in my sleep 1129 | * I don't want this book to start off dry, I want to showcase real examples of Auto Layout in action, and then I want to break it down with a real world example 1130 | * I'm not here to talk about how constraints work, but how you can leverage constraints to make the UI you want 1131 | 1132 | 1133 | ## September 18 2018 12:50 - 1:30 1134 | 1135 | * Mind map for Chapter 1 (15 minutes) 1136 | * Talk through topic (7 minutes) 1137 | * Update outline 1138 | 1139 | ## September 18 2018 10:00 - 12:00 1140 | 1141 | * Setup the [Auto Layout Book landing page](http://bit.ly/AutoLayoutBook). 1142 | * Announced the landing page to my email list, Facebook, and Twitter 1143 | * Setup a GoViral page to encourage social shares of the book before launch 1144 | 1145 | --------------------------------------------------------------------------------