You can create your own accessibility elements from scratch. One use-case for doing that is when you do some custom drawing instead of building your UI using or relying on UIKit components. A circular progress bar, could be an example.

Two examples. The first one is the calendar app in iOS. Let's imagine that each one of the week's rows are customary drawn, but we'd like for each day to be an accessibility element. We could mark the week’s container view not to be an accessibility element and then create a UIAccessibilityElement for each day. These will need an accessibility label and the accessibility frame in the container space. Then we can add all the newly created elements to the accessibilityElements array of the container. The second example is a circular progress bar drawn using UIBezierPath. We could follow a similar approach for making it accessible.

You may also find interesting...

When making charts accessible, sometimes you may have just too many data points for the user to have to go one by one through all of them. In those cases, you can create accessibility elements that represent meaningful chunks of the graph.

In UIKit, to create an adjustable component we need to add the adjustable trait and override both accessibilityIncrement() and accessibilityDecrement(). In SwiftUI, everything you need is bundled in the accessibilityAdjustableAction(_:) modifier.

Sometimes you can create your own accessibility elements from scratch to group elements too. Perhaps because they're not contained in the same superview. You can combine these elements' frames and provide a suitable accessibility label.

Created in Swift with Ignite.

Supporting Swift for Swifts