Sponsored Link
Find An iOS Dev Job Through Vettery
Vettery specializes in developer roles and is completely free for job seekers. Interested? Submit your profile, and if accepted, you can receive interview requests directly from top companies growing their mobile dev teams. Get Started.
News
The Baffling Omission of Rich Text in SwiftUI
I'd imagine most of you have already read Brent Simmons' piece on SwiftUI not being ready this week, so I'm going to link to this one by Jason Brennan instead.
It's true that SwiftUI probably isn't ready for your app right now, but we do need to be a little careful with how we react to that. Is the omission of a UI control "baffling", or is it absolutely understandable? This community has (justifiably) given Apple a very hard time for buggy betas and releases this year. It doesn't feel quite right to also then give them a hard time for not shipping enough. 😬
Package Resources Proposal for the Swift Package Manager
Packages should be able to contain images, data files, and other resources needed at runtime.
Yes, they should! 📦 I hope this gets approved and implemented quickly.
Tools
A pod merge plugin for Cocoapods
You might be aware that it's quicker to launch an app with a small number of large frameworks than with a large number of smaller ones. If you're using CocoaPods to manage your dependencies though, you'll be limited to having a separate framework for every dependency. Enter this plugin by Siddharth Gupta that allows you to merge frameworks together as your app is built.
Lofelt Composer
This is interesting. I linked to Captain AHAP (which is still a great name!) a while ago which lets you design custom haptic patterns. This app is slightly different, it's designed to make a custom haptic to match an audio waveform. The audio is mapped in a browser based editor and there's a companion app available for testing out how it feels. This is probably quite niche, but I do like the idea.
Quickly selected text in an Xcode Playground
This is a super simple and smart little hack from Daniel Tavares that leverages Playground and macOS Automator. Simply select some text, and instantly have it open in a playground. Not everything has to be complicated! 👍
Code
SwiftUI Layout System
This is a wonderful, in-depth look at the layout systems in SwiftUI from Alexander Grebenyuk.
You can feel that SwiftUI was created with a completely different mindset than Auto Layout. It is not an academic exercise to efficiently solve systems of linear equalities and inequalities.
I did grow to love Auto Layout over the years, but it never felt quite as natural as springs and struts to me. SwiftUI instantly feels better, and just as flexible where it actually matters.
UINavigationBar changes in iOS13
I really liked Sarun Wongpatcharapakorn's guide to the modality changes in iOS 13 that I linked to back in September, and now he's tackling the navigation bar. Get yourself up to speed with this article, and don't forget to also check part 2 out once you're done!
Five tips and tricks for CloudKit Sharing
This was a much more in-depth article on CloudKit sharing than I'd have expected for a "tips and tricks" style article. Dan Griffin shares some knowledge that you'll want to be aware of if you're using CloudKit.
Stop force unwrapping IBOutlets with @Delayed
Łukasz Mróz with a @ Delayed
property wrapper that'll let you remove those pesky force unwraps from your outlet variables. I do love seeing how people are using property wrappers, and while I'm not sure I'd bother with this for an outlet (which are so very rarely nil), I can imagine other uses for this wrapper.
Design
Pull-to-Search
Pull to refresh is great, but only works well for timeline-based apps. Various apps have tried to do various other things with "pull to …" over the years, and none have really caught on. Apple have already standardised on having a search box at the top of data lists, and I like this suggestion from Sam Dods to lean into that a bit more.
Business and Marketing
A glimpse of the full feature set…
It will only make sense in certain kinds of apps, but I did like this technique from Geoff Hackworth for previewing what's missing in the full version of an app by showing it briefly, blurring it and then showing an upsell. I'm not a huge fan of alerts with this much text on them, but the technique would work just as well with a view controller sitting atop the blurred content.
Videos
try! Swift NYC 2019
A full complement of talks from the wonderful try! Swift conference from New York last month.
There's even a talk of mine in here if you look carefully. 🙈
And finally...
When life gives you lemons, make lemonade. 🍋
Comment
I'm sure you've all seen the new NSHipster site that launched this week, No overview available. It's a survey of the state of the Apple framework documentation. Specifically, it shows stats on the number of undocumented symbols in each framework.
The community reaction to the site has been strongly negative, and very loud. As Mattt said when he launched it, poor documentation coverage is widely cited as a major problem, and this site is easy to point at and say "Look… I told you so!"
The number of documented symbols is certainly one aspect of complete documentation, but it's never as simple as a single, flawed metric. Why flawed? Is this any better than "No overview available"?
What's very surprising though is how loud people are shouting about this when lots of the percentages on the site are high! UIKit, by far the biggest framework with over 13,000 symbols is more than 90% documented! That's amazing. Yes, some frameworks are nowhere near 90% (the audio frameworks seem to be particularly weak spots) but it's not as bad as people are making it out to be.
Also, a single metric like this doesn't take into account all of the wonderful articles and sample code. They can be hard to find as they are scattered around the library, but there are lots of them and they are generally high quality. In my opinion, this type of documentation is even more important than the pure reference.
That brings me to what I believe the biggest problem with the documentation is, the amount of information that's no longer being updated in the archive. The old programming guides are wonderful, and many of the tech notes are invaluable. It's a tragedy to see them abandoned without being adequately replaced. It's a very sad situation.
We should be pushing Apple to focus on improving documentation and I'd love to see Apple resource this department with everything that it needs to get this colossal task done. It's just not as simple as aiming for 100% coverage.
Dave Verwer