Reading time: 1 min

This recipe shows how to style SwiftUI TextField's prompt / placeholder text, in order to, e.g, change its color or font. Alternatively, you can put a fully custom view for the placeholder. The end result looks like this:

preview

Since there is no built-in way of doing this, we'll have to resort...

Continue Reading...

Reading time: 1 min

This recipe shows how to disable scrolling in a ScrollView or List, while still allowing interactions with its subviews. The end result looks like this:

preview

The trick is to use a DragGesture with minimumDistance of zero, which will then intercept scrolling touches, while still allowing taps an...

Continue Reading...

Reading time: 4 min

This recipe shows how to implement an async binding in SwiftUI. Just like a regular Binding, async binding creates a two-way connection between a property that stores data, and a view that displays and changes the data - except that those changes are expressed with async blocks.

This allows...

Continue Reading...

Reading time: 1 min

This quick recipe shows how to implement a Combine map operator that takes an async block. To do this, you need to:

  1. Use Task to run async code in a sync context.
  2. Use the Future publisher to publish the new value the Task is completed.
  3. Use flatMap to transfer from your current p...

Continue Reading...

Reading time: 1 min

This quick recipe shows how to write an extension for a Combine Publisher whose output is of a generic type. Say you have a simple generic enum:

public enum AsyncState {
  case idle,
       loading,
       ready(Value),
       failure(Error)
}

If you wish to write an extension for a P...

Continue Reading...