{"id":44253,"date":"2024-07-29T16:09:42","date_gmt":"2024-07-29T20:09:42","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=44253"},"modified":"2024-07-29T16:09:42","modified_gmt":"2024-07-29T20:09:42","slug":"magic-lasso-redesigned","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2024\/07\/29\/magic-lasso-redesigned\/","title":{"rendered":"Magic Lasso Redesigned"},"content":{"rendered":"<p><a href=\"https:\/\/www.magiclasso.co\/insights\/magic-lasso-redesigned\/\">Matthew Bickham<\/a>:<\/p>\n<blockquote cite=\"https:\/\/www.magiclasso.co\/insights\/magic-lasso-redesigned\/\">\n<p>Under the covers, Magic Lasso has been re-architected using <a href=\"https:\/\/developer.apple.com\/xcode\/swiftui\/\">SwiftUI<\/a> which enables a shared but tailored UI implementation across the iPhone, iPad and Mac apps.<\/p>\n\n<p>The move to SwiftUI delivers improved user accessibility including complete support for variable type sizing and Dark mode. In the future, multilingual support will also be considerably easier to rollout.<\/p>\n\n<p>Over 95% of the app&rsquo;s UI is now written in SwiftUI, an <a href=\"https:\/\/www.magiclasso.co\/insights\/ad-blocker-year-in-review-2023\/\">increase from less than 30% this time last year<\/a>.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/mjtsai.com\/blog\/2024\/07\/26\/sonos-apologizes-for-app-redesign\/#comment-4135690\">Matthew Bickham<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mjtsai.com\/blog\/2024\/07\/26\/sonos-apologizes-for-app-redesign\/#comment-4135690\"><p>What I did notice going through the process though is that if you base the implementation on the SwiftUI defaults you will definitely get some strange, and especially on macOS, less than ideal behaviour. This led me to not use some of the inbuilt SwiftUI approaches for certain UI elements. Instead, I created custom implementations that better fit within user expectations and best practice iOS and macOS conventions.<\/p><p>[&#8230;]<\/p><p>A huge part of the work was actually prototyping approaches in SwiftUI to see what works well and what doesn&rsquo;t. Once a clean path was discovered, the final implementation was relatively straightforward but it was based upon those learnings. The hard part was ensuring simplicity and not falling into the many traps of weird behaviour that are present in the System Settings UI for instance.<\/p><p>Personally I prefer working in SwiftUI now &#x2013; probably because I no longer need to implement two similar UIs in both UIKit and AppKit.<\/p><\/blockquote>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2024\/07\/26\/sonos-apologizes-for-app-redesign\/\">Sonos Apologizes for App Redesign<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2024\/07\/18\/overcasts-new-foundation\/\">Overcast&rsquo;s New Foundation<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2023\/05\/30\/rewriting-soundcloud-in-swiftui\/\">Rewriting SoundCloud in SwiftUI<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2023\/03\/14\/converting-the-streaks-apple-watch-app-to-swiftui\/\">Converting the Streaks Apple Watch App to SwiftUI<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2021\/09\/15\/magic-lasso-adblock-3-0\/\">Magic Lasso Adblock 3.0<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Matthew Bickham: Under the covers, Magic Lasso has been re-architected using SwiftUI which enables a shared but tailored UI implementation across the iPhone, iPad and Mac apps. The move to SwiftUI delivers improved user accessibility including complete support for variable type sizing and Dark mode. In the future, multilingual support will also be considerably easier [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2024-07-29T20:09:46Z","apple_news_api_id":"6804eb54-87c6-4fc7-935c-cc4d4ef39fda","apple_news_api_modified_at":"2024-07-29T20:09:46Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/AaATrVIfGT8eTXMxNTvOf2g","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":[2],"tags":[31,2321,26,30,32,2385,2118,2246,2074,1812],"class_list":["post-44253","post","type-post","status-publish","format-standard","hentry","category-technology","tag-ios","tag-ios-17","tag-iosapp","tag-mac","tag-macapp","tag-macos-14-sonoma","tag-magic-lasso-adblock","tag-safari-extensions","tag-software-rewrite","tag-swiftui"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/44253","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=44253"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/44253\/revisions"}],"predecessor-version":[{"id":44254,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/44253\/revisions\/44254"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=44253"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=44253"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=44253"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}