{"id":31134,"date":"2020-12-24T12:51:10","date_gmt":"2020-12-24T17:51:10","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=31134"},"modified":"2020-12-24T12:51:10","modified_gmt":"2020-12-24T17:51:10","slug":"swiftui-layout-explained","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2020\/12\/24\/swiftui-layout-explained\/","title":{"rendered":"SwiftUI Layout Explained"},"content":{"rendered":"<p><a href=\"https:\/\/www.objc.io\/blog\/2020\/12\/24\/swiftui-layout-explained\/\">Florian Kugler<\/a>:<\/p>\n<blockquote cite=\"https:\/\/www.objc.io\/blog\/2020\/12\/24\/swiftui-layout-explained\/\">\n<p>&#x1F332; <em>As a little Christmas present to the community, we&rsquo;re making our entire <a href=\"https:\/\/talk.objc.io\/collections\/swiftui-layout-explained\">SwiftUI Layout Explained<\/a> video series free to watch until the end of the year.<\/em> &#x1F332;<\/p>\n<p>[&#8230;]<\/p>\n<p>We did a lot of research for our book, <a href=\"\/books\/thinking-in-swiftui\">Thinking in SwiftUI<\/a>, but even so we kept encountering layout behavior that we couldn&rsquo;t really make sense of.<\/p> <p>We decided to go one step further, and reimplement SwiftUI&rsquo;s layout system, along with the layout behavior of many built-in views. This forced us to think hard about the algorithms, and helped us understand SwiftUI&rsquo;s implementation by comparing it to our own.<\/p> <p>All of this is documented in our latest Swift Talk collection: <a href=\"https:\/\/talk.objc.io\/collections\/swiftui-layout-explained\">SwiftUI Layout Explained<\/a>. With eleven episodes, five hours of live-coding and discussion, a hand-written transcript and sample code, there&rsquo;s plenty to enjoy over the winter break.<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Florian Kugler: &#x1F332; As a little Christmas present to the community, we&rsquo;re making our entire SwiftUI Layout Explained video series free to watch until the end of the year. &#x1F332; [&#8230;] We did a lot of research for our book, Thinking in SwiftUI, but even so we kept encountering layout behavior that we couldn&rsquo;t really [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2020-12-24T17:51:13Z","apple_news_api_id":"151246d3-55d1-4c99-9b5d-ccc99dc979c8","apple_news_api_modified_at":"2020-12-24T17:51:14Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/AFRJG01XRTJmbXczJncl5yA","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[699,31,1837,30,1891,71,901,1812],"class_list":["post-31134","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-bargain","tag-ios","tag-ios-14","tag-mac","tag-macos-11-0","tag-programming","tag-swift-programming-language","tag-swiftui"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/31134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=31134"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/31134\/revisions"}],"predecessor-version":[{"id":31135,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/31134\/revisions\/31135"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=31134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=31134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=31134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}