Use this skill when the task is primarily about VoiceOver support, Dynamic Type, semantic accessibility traits, color contrast, accessibility auditing, or inclusive design on iOS.
Use this skill for VoiceOver, Dynamic Type, semantic markup, and inclusive design work.
accessibilityLabel, accessibilityHint, and accessibilityTraits on interactive elementsaccessibilityElement grouping and container behaviorUIFontMetrics.dynamicTypeSizeUIAccessibility.isReduceMotionEnabled)UIFontMetrics for custom fonts that scale with Dynamic TypeaccessibilityRespondsToUserInteraction for decorative vs interactive distinctionaccessibilityLabel, accessibilityTraits, accessibilityHint, UIFontMetrics, isAccessibilityElementaccessibilityRepresentation (SwiftUI), AccessibilityAttachmentModifierAccessibilityRepresentation protocol, accessibilityQuickAction, AccessibilityFocusStateaccessibilityZoomAction, improved trait handlingdeleteButton.accessibilityLabel = "Delete message"
deleteButton.accessibilityHint = "Removes this message from your inbox"
deleteButton.accessibilityTraits = .button
// Wrong: label reads the SF Symbol name, no hint, no trait
deleteButton.accessibilityLabel = "trash.circle.fill"
// UIKit: scale custom font with Dynamic Type
let customFont = UIFont(name: "Avenir-Medium", size: 17)!
label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: customFont)
label.adjustsFontForContentSizeCategory = true
label.numberOfLines = 0 // allow wrapping when text scales
// Wrong: hardcoded size, no scaling, truncation hides content
label.font = UIFont(name: "Avenir-Medium", size: 17)
label.numberOfLines = 1