Skip to content

Instantly share code, notes, and snippets.

@e-sung
Created August 22, 2021 04:23
Show Gist options
  • Save e-sung/3cafc3028f2c9049405a075cd07589a3 to your computer and use it in GitHub Desktop.
Save e-sung/3cafc3028f2c9049405a075cd07589a3 to your computer and use it in GitHub Desktop.
Delivering an Exceptional Accessibility Experience 의 샘플코드를 LayoutDrivenUI기반으로 재작성함
class DogStatsView: UIView {
@IBOutlet var nameTitleLabel: UILabel!
@IBOutlet var nameLabel: UILabel!
@IBOutlet var breedTitleLabel: UILabel!
@IBOutlet var breedLabel: UILabel!
@IBOutlet var ageTitleLabel: UILabel!
@IBOutlet var ageLabel: UILabel!
@IBOutlet var weightTitleLabel: UILabel!
@IBOutlet var weightLabel: UILabel!
var dog: Dog? = nil {
didSet { setNeedsLayout() }
}
override func layoutSubviews() {
super.layoutSubviews()
guard let dog = dog else {
return
}
nameLabel.text = dog.name
breedLabel.text = dog.breed
ageLabel.text = "\(dog.age)"
weightLabel.text = "\(dog.weight)"
// Accessibility Logic
let nameElement = UIAccessibilityElement(accessibilityContainer: self)
nameElement.accessibilityLabel = nameTitleLabel.text
nameElement.accessibilityValue = nameLabel.text
nameElement.accessibilityFrameInContainerSpace = nameTitleLabel.frame.union(nameLabel.frame)
let ageElement = UIAccessibilityElement(accessibilityContainer: self)
ageElement.accessibilityLabel = ageTitleLabel.text
ageElement.accessibilityValue = ageLabel.text
ageElement.accessibilityFrameInContainerSpace = ageTitleLabel.frame.union(ageLabel.frame)
let breedElement = UIAccessibilityElement(accessibilityContainer: self)
breedElement.accessibilityLabel = breedTitleLabel.text
breedElement.accessibilityValue = breedLabel.text
breedElement.accessibilityFrameInContainerSpace = breedTitleLabel.frame.union(breedLabel.frame)
let weightElement = UIAccessibilityElement(accessibilityContainer: self)
weightElement.accessibilityLabel = weightTitleLabel.text
weightElement.accessibilityValue = weightLabel.text
weightElement.accessibilityFrameInContainerSpace = weightTitleLabel.frame.union(weightLabel.frame)
accessibilityElements = [
nameElement,
ageElement,
breedElement,
weightElement
]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment