Created
August 22, 2021 04:23
-
-
Save e-sung/3cafc3028f2c9049405a075cd07589a3 to your computer and use it in GitHub Desktop.
Delivering an Exceptional Accessibility Experience 의 샘플코드를 LayoutDrivenUI기반으로 재작성함
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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