[iOS] 접근성 (Accessibility)
Stanford — Developing iOS 10 Apps with Swift — 17. Accessibility 강의 정리 글
애플에서는 학습, 동작, 시각, 청각 등의 문제를 겪고 있는 사람들을 위해 아래와 같은 접근성 기능을 제공한다.
Voice Over
isAccessibilityElement: Bool
- label이나 button 은 기본으로
true
지만 imageView 등은 아님. false
로 설정되면 해당 element 에 대해서는 voice over trigger 안됨
accessibilityLabel: String?
- 접근성 문구.
- button의 경우 image 가 있다면 해당 image 이름으로 label 이 설정되기 때문에 따로 설정이 필요할 수 있음.
accessibilityTraits: UIAccessibilityTraits
- button, header, image 등 해당 element 의 카테고리 특성을 나타냄.
- [accessibilityLabel + accessibilityTraits] 형식으로 보이스 오버 출력
accessibilityValue: String?
- state 가지고 있는 것에 대해 설정.
- Ex) 슬라이더 50%로 설정되어있으면 “50%”로 설정
accessibilityHint: String?
- 설명의 긴 버전.
- 해당 인터페이스를 사용해본적이 없어서 어떻게 사용하는게 좋은지에 대한 설명 부여.
- 하지만 끌 수 있기(turn off) 때문에 유저에게 중요한 정보는 담으면 안됨.
- Ex) 볼륨을 조절하려면 스와이프 up 혹은 down 하세요
accessibilityFrame: CGRect
- 접근성 설정된 element의 위치 지정 가능
accessibilityElements: [Any]?
- container에 있는 여러 접근성 elements 들 담을 수 있음.
- 설정 > 손쉬운 사용 > VoiceOver
Color
- 색맹의 경우 Color 로 의미를 구분하기 어려울 수 있으므로 모양까지 다르게 하는 것 고려.
Transparency and Contrast
- 시력에 문제 있는 사람에게 투명도 줄이기 / 대비 증가 설정은 훨씬 더 가독성 높게 만듦
투명도 줄이기
UIAccessibility.isReduceTransparencyEnabled
로 설정 여부 체크 가능.- 설정 > 손쉬운 사용 > 디스플레이 및 텍스트 크기 > 투명도 줄이기
대비 증가
UIAccessibility.isDarkerSystemColorsEnabled
로 설정 여부 체크 가능.- 설정 > 손쉬운 사용 > 디스플레이 및 텍스트 크기 > 대비 증가
Motion
- 전정기관에 문제 있는 사람들은 화면에 나타나는 motion 이 클 경우에 문제가 될 수 있음
UIAccessibility.isReduceMotionEnabled
로 설정 여부 확인 후에 부드럽게 전환한다든지 등의 처리 가능- 설정 > 손쉬운 사용 > 동작 > 동작 줄이기
Dynamic Type
- 시력 문제로 큰 글씨를 선호하는 사람들이 있음
label.font = UIFont.preferredFont(forTextStyle: .body)
이런식으로preferredFont
함수 사용. 이 함수를 통해 반환되는 폰트는 Apple San Francisco 이고, 안에 인자로 들어가는FontStyle
에는body
,title
,callout
등 다양한 point 와 weight 에 대당하는 case 제공- 추가로 label의
adjustsFontForContentSizeCategory = true
로 설정해줘야 유저가 설정을 바꿀때마다 폰트 사이즈가 자동으로 변경. iOS 9 이전에는UIContentSizeCategoryDidChange
노티피케이션을 보고있으면서 수동으로 폰트를 업데이트 했어야 했음. preferredContentSizeCategory
속성 접근해서 사용자가 선호하는 글꼴 사이즈 옵션을 가져올 수도 있음.- 유동적 글자크기를 위해서 커스텀 폰트를 조정하는 일을 쉽게 하기 위해서 Apple은 iOS 11에서
UIFontMetrics
를 제공. - 설정 > 손쉬운 사용 > 디스플레이 및 텍스트 크기 > 더 큰 텍스트
출처
https://pilgwon.github.io/blog/2017/08/23/Using-A-Custom-Font-With-Dynamic-Type.html