So, let’s get started with this week’s links! I say this every year, but it’s worth repeating. I won’t try to sum up every announcement or cover every new API this week. Not only would that be impossible, but how would I keep you busy for the rest of the summer if I covered everything today? 👍
For almost nine years, this newsletter has been a collection of links that caught my eye during the week. It’s the same this week, and it’ll be the same next week. If we’re lucky, we might be getting close to digesting everything by September. 🤞
Apple has tried several times to make custom controls usable in its visual design tools. First, Interface Builder plugins, then @IBDesignable and friends, and now this. I love that the overhead when creating the control is virtually nothing, so it feels like this one might stick! 👍 Sarun Wongpatcharapakorn has the details.
Sidenote: I forget who created it now, but I remember a set of standard UI controls that had a dark appearance, for use in inspector style windows back in the 10.4/10.5 era that had an IB plugin. The controls were great, but the IB plugin was more trouble than it was worth. Can anyone remember who made them?
Update: Within 5 minutes of publishing, we have an answer! It was BWToolkit from Brandon Walkin. I knew I wouldn’t need to wait long. 🚀
In my opinion, scroll smoothness is one of the most critical aspects of whether people will perceive your app as performant. So, I was incredibly happy to see Xcode 12 include a way for you to visualise and test how your apps perform when scrolling. ❤️ There’s a little more information on how to activate the feature, but I haven’t seen this anywhere else apart from in this tweet from Antoine van der Lee.
The application delegate has been a cornerstone of Cocoa since before the word only meant a chocolatey evening beverage. 🤩 With this year’s SwiftUI release, the app delegate is no longer necessary in a SwiftUI app. It’s not yet a complete replacement, but it’s a sign of where things might be heading in future years. John Sundell takes a quick look.
The most surprising thing about this year’s SwiftUI changes is that they were mostly additive! Great news if you adopted early and have existing code, but it also shows what a great job the team did with the API design last year. There were lots of additions though, and Paul Hudson immediately started writing a million new blog posts. 🚀
Did Apple just deprecate table views?! 🤯 Ever since collection views appeared, with none of the “standard” cell fields like textLabel
and detailTextLabel
the design of the table cell API felt a little outdated. It’s been possible to use collection views in place of table views for a long time, but this year’s changes make that the recommended option. Here’s Hesham Abd-Elmegid with a rundown of what’s new. I also think that Fernando Bunn might have summed this up in the best way! 😂
Here’s Mohsen Alijanpour talking about a topic that has been on my mind recently too. Where UIKit pushed you towards MVC, SwiftUI is completely unopinionated in terms of your application architecture. Even more so with this year’s release, where you may also say au revoir to the AppDelegate. Even though the framework isn’t opinionated in software architecture anymore, I would like to see Apple give some guidance on architecture. Leaving it completely open is fantastic for those people who are passionate about software architecture, but might be bad for the platform on a broader scale.
The Human Interface Guidelines are worth reading from cover to cover every time there’s a new iOS release, and this year is no different. Even better, this year’s new version of the document came with release notes, just in case you had memorised the rest of the document! 😍
I’d be surprised if last week’s shouting prompted this as Apple doesn’t tend to make sudden moves in situations like that. Regardless of why this happened, it’s a good step forward:
Additionally, two changes are coming to the app review process and will be implemented this summer. First, developers will not only be able to appeal decisions about whether an app violates a given guideline of the App Store Review Guidelines, but will also have a mechanism to challenge the guideline itself. Second, for apps that are already on the App Store, bug fixes will no longer be delayed over guideline violations except for those related to legal issues. Developers will instead be able to address the issue in their next submission.
A good reminder from David Smith that a sherlocking isn’t the end of the world. A rising tide lifts all boats. ⛵️
A grid control was widely anticipated in this year’s version of SwiftUI, and sure enough, it made an appearance this week. Here’s Ben Scheirman with a video showing how to get started with SwiftUI grids. It’s nowhere near as flexible as a UIKit collection view, but that’s OK. It can do the vast majority of what people actually use collection views for, in a much more approachable way.
Senior iOS Engineer @ Cochlear – Make a difference in the world with the apps you work on. Build apps for cutting-edge hearing implants, with Bluetooth LE connectivity, that allow users to control and manage their sense of hearing. Work with custom hardware and a strong focus on security to build all-native apps that you are proud of. Passion for the latest iOS tech is a must; come help us build great products. – Remote, or Sydney Australia
Senior iOS Developer @ Vessel – Our mission is to provide instant health tracking at home - we launch in August! Our mobile experience needs to be top-notch so we’re hiring a Senior iOS Developer. We are a consumer-facing company focused on creating an incredible UI/UX. We have a lean team of excellent developers that collaborate to create something truly special. – Remote, or San Diego CA
It wouldn’t be WWDC without a ukelele, and a song about retain
and release
.
Join James for the best way to end this week. As always, it’s also supporting a collection of fantastic causes, so please consider a donation. Also, is this the largest number of breakpoints in a single song ever? It might be!