It’s been a while since I wrote one of these, but I put a bit of code together recently, and felt like writing it up.
SwiftUI makes it easy to pop up alerts using .alert() modifiers, but the way they work often doesn’t suit the ways that I need to use them. You typically end up needing four different components in four separate places to make it all happen:
Read more...It’s been a long while since the last time Wooji Juice released an all-new app. There’s been no shortage of work keeping Ferrite, Hokusai and others up-to-date, but the time is finally here to welcome our latest app, Transcriptionist.
Transcriptionist is an app for iPhone, iPad and Apple Silicon Mac that imports recordings of speech, and turns them into text that you can read, edit, search, use to navigate around the recording, and export in various formats — privately, on your device.
Read more...This is one of those posts I’m making, not because anyone cares about it right now, but because perhaps one day someone will search the web for a solution to this error message, find this post, and be glad.
(Also, because there’s a non-zero chance that person might be me in a couple of years, once I’ve forgotten about it.)
Read more...The latest update to our radio and podcast production tool Ferrite Recording Studio is now available in the App Store!
Ferrite 3 offers an enhanced, modernised UI all across the app. Major new features for Ferrite 3 Pro customers include:
Read more...Welcome to the new look Wooji Juice site! It’s been a few years — I think the last redesign was in 2014? This refresh took a little longer because it wasn’t just a redesign, it was also a rewrite of the site builder that renders it.
The previous site builder was written back in 2006 in Python 2, and was way overdue for replacement. It served the site well for over 15 years — dating to long before Wooji Juice was a company, and was instead just a blog!
Read more...I mentioned in a previous article that, to find out the size of a view in SwiftUI, you use GeometryReader. It passes a GeometryProxy in to the content, which can read the size to make adjustments to itself — to calculate “responsive” layouts, figure out appropriate sizes for its own content, and so on.
But, when you actually use a GeometryReader, it changes the layout of the view, which can cause all sorts of other problems.
Read more...SwiftUI is quite a new technology, and it still has some rough edges. There are bugs, and there are missing features – but mostly, the design is pretty solid. Over time the bugs will get fixed, and the missing features filled in.
But the layout engine has a significant limitation: unlike Auto Layout, it’s strictly one-way. Superviews tell subviews how much space they have available, not the other way around. This makes many common tasks fairly straightforward, but it lacks some of the features of Auto Layout – most notably, equal-size constraints.
Read more...In the first part of this article, I explained that I put together a system for producing user guides for apps, by writing the guides in Swift itself, and having the compiler turn that into code/data. It can then be turned into HTML on demand, or inspected by the app to generate the table of contents, search indices, and so on.
In this part, we’re going to look into how that actually happens: How does it work? How does the code get turned into a data structure? And most importantly, how do you make it easy and comfortable for a human to write a user guide in a language intended for programming computers?
Read more...There’s a school of thought that says iOS apps shouldn’t have user guides, because they should be simple enough not to require them. This is a pretty good rule of thumb for many consumer apps, but for Pro apps like Ferrite or Hokusai it breaks down, because if you simplified them enough that a user guide was never required, they would no longer be Pro apps.
Of course, this isn’t an excuse for neglecting the user experience. You should still try to make an app as clear and easy to use as possible — apart from anything else, it’s well-known that many people will never read the user guide even if you make one.
Read more...This is another post in which we discuss a common issue that’s useful to know when working with audio (in any app, but also showing how it can be relevant to Wooji Juice apps like Ferrite Recording Studio or Hokusai Audio Editor).
Today, we’ll be discussing “clipping”. As we’ve discussed previously, audio is represented by a waveform that represents the movement of the mic/speakers over time:
Read more...