Icon buttons (those that don't have labels) are opaque to screen readers: there's no information on what the button does, so we should add it.
let button = UIButton(type: .system)
button.setImage(UIImage(systemName: "person.badge.plus", for: .normal)
button.accessibilityLabel = "Add contact"
Uppercased text may confuse screen readers. We should always add an accessibility label with a non-uppercased version of the text. This is true for labels, buttons and any other view that displays text.
let text = "Add contact"
let label = UILabel()
label.text = text.uppercased()
label.accessibilityLabel = text
let button = UIButton(type: .system)
button.setTitle(text.uppercased(), for: .normal)
button.accessibilityLabel = text