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...

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.

If an image does not convey additional information, maybe it's just used to make the UI look more attractive, it makes sense for VoiceOver to skip it. UIKit: set isAccessibilityElement to false. SwiftUI: create a decorative image explicitly.

What is the difference between isAccessibilityElement and accessibilityElementsHidden? The first one makes the view not accessible, but its subviews can still be accessible. The second one hides the view and all its subviews from assistive tech.

Created in Swift with Ignite.

Supporting Swift for Swifts