WWDC 2019 - Creating an Accessible Reading Experience 를 본 기록 ✏️ [ 인트로 ] 이렇게 긴 형식의 읽는 콘텐츠를 표시하는데 중점을 둔 앱의 경우, 보통 좋은 사용자 인터페이스를 제공하기 위해서 custom text layout를 구현합니다. custom text layout을 구현하기 위해서 Core Text나 TextKit 같은 lower level technologies로 전환해야하는 경우가 많습니다. 이 세션에서는 VoiceOver 모드에서 훌륭한 accessible reading experience를 제공하기 위한 방법을 알아볼 것입니다. [1] Reading Content Protocol 아래와 같은 Page based 앱을 예제로 살펴보겠습니다...
WWDC 20 - Make your app visually accessible 를 본 기록 ✏️ [ 인트로 ] visual accessibility를 생각할 때 너는 VoiceOver(built-in screen reader on iOS)를 생각할 것입니다. 하지만 visual accessibility에는 VoiceOver 뿐만아니라 더 많은 것들이 있습니다. 어떤 사람들은 완전한 시야(full sight), 부분적인 시야(partial sight) 또는 낮은 시야(low sight)를 가지고 있고, 어떤 사람들은 전혀 보지 못합니다. 그리고 그 사이에는 색맹(color blindness), 빛 민감도(ight sensitivity), 움직임 민감도(motion sensitivity) 등 많은 것들이 있..
WWDC 20 - App accessibility for Switch Control 를 본 기록 ✏️ [1] Switch Control 이란? 스위치 컨트롤(Switch Control)은 운동 능력이 제한된 사용자(Users with limited motor abilities)가 하나 이상의 외부 스위치나 버튼을 사용하여 iOS 기기와 상호 작용할 수 있도록 하는 애플 장치에 내장된 기술입니다. 사용자는 이 스위치를 이용해서 커서를 이동시키거나 특정 제스쳐(스크롤, 탭, 볼륨조절 등) 할 수 있습니다. 보통 이러한 스위치나 버튼은 휠체어에 장착되고 사용자는 헤드탭(head taps), 혀 클릭(tongue clicks), 빨대 내쉬기(breathing in or out into a straw) 등으로 스..
WWDC 19 - Writing Great Accessibility Labels 를 본 기록 ✏️ [1] What is Label? accessibility label의 정의는? (참고로 succinct는 '간단명료한' 이란 뜻을 가집니다.) [2] Understanding Context 여기 이런 플러스 버튼이 있을 때, accessibility label을 뭐라고 해줘야할까요? 그것은 전부 context에 달려있습니다. 예를 들어 메모 앱이라면 add to note 가 될 수 있겠고 쇼핑앱이라면 add to favorite, add to cart 가 될 수 있겠습니다. [3] Best Practices 아래 6가지를 지킨다면 best practices 입니다. 1) Remember to add lab..
WWDC 2020 - Accessibility design for Mac Catalyst 를 본 기록 ✏️ Mac Catalyst 앱을 만들 때, ios에서 accessible하게 만들었다면, 그 앱을 mac으로 가져왔을 때도 accessible 해야합니다. iOS에서의 손가락이 맥에서는 키보드이므로 (?) 우리의 목표는 키보드로 다양한 기능을 제공해서 앱을 accessible하게 만드는 것입니다. [1] Keyboard focus 첫번째로 고려해야하는 것은 keyboard focus 입니다. iOS에서 손가락으로 포커스를 이동했다면 맥에서는 키보드의 Tab 키로 포커스를 이동합니다. 우선 설정 > 키보드 > Shorcuts로 가서 Use keyboard~~ 를 체크해줍니다. 그러면 keboard로 다른..
WWDC 2017 - Building Apps with Dynamic Type 를 본 기록 ✏️ (여기서 Text만 기록했는데 tableview랑 image도 뒤에 설명해주신답니다,,) [1] Dynamic Type With Dynamic Type, people choose their preferred text size and iOS switches fonts automatically as needed. Dynamic Type을 지원하는 전화 앱인데요, 저시력자가 볼 때는 이렇게 보이기 때문에 Dynamic Type을 지원하는게 얼마나 중요한 지 보여주십니다. 텍스트 사이즈는 설정 > 디스플레이 및 밝기 > 텍스트 크기에서 바꿀 수 있고 더 큰 사이즈를 원한다면, 설정 > 손쉬운 사용 > 디스플레이 및 ..
Array 문서 의 Removing Elements 부분을 보면 popLast는 있지만 popFirst가 없는 것을 볼 수 있습니다. popFirst를 검색해보면 두개가 나오는데, 첫번째 popFirst 는 ArraySlice에 있고 두번째 popFirst는 Collection에 있네요! 그래서 popFirst를 쓰고 싶으면 array에 바로 못쓰고 arraySlice에 써줘야합니다,,, 위의 한 줄을 풀어써보면 이렇게 되는데요, array의 range를 구해서 arrayslice를 만들어준 것입니다! 좀 불편하니까 extension을 만들어줄 수 있습니다. 그럼 이제 array에 바로 편하게 쓸 수 있습니다 [ 참고 ] 참고로 이렇게 extension 안만들고 그냥 여기 removeFirst 쓰면 되는..
[ 목표 ] RIBs 에서 Template과 template을 xcode에 설치할 수 있는 스크립트를 제공하는 것처럼 두개의 템플릿 (Reactor Template / Reactor Unit Tests Template)과 install 스크립트를 만들어보기! 그리고 Reactor Template에 옵션 (접근제어자를 public으로 할 건지 internal로 할 건지) 을 추가해보기! [1] 초기 setup 우선 reactor-tooling 이라는 폴더를 만들고 Reactor.xctemplate Reactor Unit Tests.xctemplate 이라는 두개의 빈 폴더를 만들어줬습니다. 그 다음 RIBs의 install 스크립트 를 적당히 수정해서 폴더로 가져와줍니다. #!/usr/bin/env sh ..
[ 단축어 만들고 싶은 이유 ] 깃헙 > Setting > Options에 보면 머지될 때 해당 브랜치를 지워주는 기능을 설정할 수 있습니다. 이는 원격 브랜치를 지워주는 기능으로 로컬 브랜치는 알아서 지워줘야합니다. 머지된 로컬 브랜치를 파악해서 스스로 지워주는 일이 귀찮을 때, 머지된 로컬 브랜치를 전부 지워주는 git 명령어를 쓸 수 있습니다. (새로운 로컬브랜치나 아직 머지되지 않은 로컬브랜치는 안지움) develop에 머지된 로컬 브랜치들을 삭제해주는 명령어입니다. (참고: local/remote/merged 브랜치 목록 조회 명령어) git branch -d $(git branch --merge develop | grep -i -v -E "master|develop") 주기적으로 이 명령어를 ..
ZStack 은 자신의 children를 z축으로 overlay하는 View이고 overlay 는 현재 뷰에 secondary view를 overlay하는 modifier 입니다. (overlay를 중첩으로 번역할 수 있을 것 같습니다) 애플문서에 있는 overlay 예제의 결과를 zstack으로도 똑같이 나타낼 수 있습니다. 이렇게 보면 똑같아보이지만 사실 두 개는 차이점이 있습니다. ZStack의 자식뷰들은 서로에 대해 independent 합니다. 그리고 ZStack에 frame을 따로 주지 않은 이상 가장 큰 자식뷰를 기준으로 ZStack의 fit이 결정됩니다. 반면 overlay의 경우 overlay되는 view는 parent view에 종속됩니다. 항상 overlaid view는 parent ..
- Total
- Today
- Yesterday
- Flutter Text Gradient
- Django Heroku Scheduler
- DRF APIException
- cocoapod
- ipad multitasking
- Django FCM
- 장고 URL querystring
- 플러터 싱글톤
- flutter deep link
- Flutter Clipboard
- 플러터 얼럿
- 장고 Custom Management Command
- Sketch 누끼
- flutter build mode
- PencilKit
- Flutter Spacer
- ribs
- Flutter 로딩
- Flutter getter setter
- flutter dynamic link
- flutter 앱 출시
- Django Firebase Cloud Messaging
- 구글 Geocoding API
- SerializerMethodField
- METAL
- Dart Factory
- drf custom error
- github actions
- Watch App for iOS App vs Watch App
- Python Type Hint
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |