iOS(30)
-
[WWDC Video Study] Make your app visually accessible
Link Make your app visually accessible - WWDC 2020 - Videos - Apple Developer 시각적 접근성 시각적 접근성에 대해 생각할 때 iOS에서는 VoiceOver를 많이 생각할 것이다. 근데 생각보다 시각적 접근성에는 훨씬 더 많은 것이 있다. 사람마다 시력은 다르다. 시력이 좋거나, 나쁘거나, 전혀 보이지않을 수도 있고, 색맹, 빛 감도, 움직임 민감도 등 많은 것들이 있다. iOS는 모든 사람이 자신에게 잘 맞는 방식으로 기기를 최대한 활용할 수 있도록 다양한 시각적 접근성 설정을 제공한다. Color and Shape 특정 UI 요소를 강조하려면 어떻게 할까? 는 많이 고민하는 문제들이다. 하지만 색을 통한 강조는 색맹이거나 시력이 낮은 사람들에..
2020.12.28 -
[WWDC Video Study] Making Apps More Accessible With Custom Actions
Link Making Apps More Accessible With Custom Actions - WWDC 2019 - Videos - Apple Developer 사용자 지정 작업은 두 가지에 매우 적합하다. 앱의 잡동사니를 줄이는 것 → 보조 기술을 사용하는 사용자에게 특히 중요 앱에서 보다 복잡한 상호 작용의 편의성과 속도를 개선하는 것 잡동사니를 줄여보자 Voice Over Voice Over는 시각장애인과 저시력을 가진 사람들을 위해 많은 제품에 내장된 스크린 리더이다.(스와이프를 통해 이동 가능하다.) 위의 땅콩버터 리스트 앱에서 GIFF의 등급을 올리려면 어떻게 해야할까? 찾고있는 병을 찾을 때 까지 아래의 리스트를 눈으로 보고 찾을 것이다. 왜냐, UI를 논리적으로 묶어 직관력을 제공해주기..
2020.12.27 -
[Swift] 배열 index 조회 및 삭제하기
배열(정확히는 Collection)에서 값을 조회하는 방법을 알아보자. firstIndex(of:) 는 배열의 앞에서부터 조회해서 첫번째 일치하는 값의 index를 반환한다. lastIndex(of:) 는 배열의 뒤에서부터 조회해서 첫번째 일치하는 값의 index를 반환한다. var arr: [String] = ["일번", "이번", "삼번", "사번", "이번", "육번"] if let firstIndex = arr.firstIndex(of: "이번") { print(firstIndex) // 1 } if let lastIndex = arr.lastIndex(of: "이번") { print(lastIndex) // 4 } 반환된 값은 Int? 이다. (조회했을 때 일치하는 값이 없을 경우가 있기때문에 ..
2020.08.13 -
[RxSwift] Combining Operator
startsWith Observable 시퀀스 앖에 다른 값 하나를 추가해준다 let disposeBag = DisposeBag() let numbers = Observable.of(2,3,4) let observable = numbers.startWith(1) observable.subscribe(onNext: { print($0) }).disposed(by: disposeBag) // 1 // 2 // 3 // 4 concat startWith와 비슷하다. startWith는 하나의 요소가 맨 앞에 추가되지만, concat은 여러 개의 요소가 앞 뒤로 추가 가능하다. let first = Observable.of(1,2) let second = Observable.of(4,5) let observab..
2020.04.25 -
[RxSwift] Transforming Operator
toArray completed가 된 시점 까지의 데이터를 array로 바꿔서 emit한다. Observable.of(1,2,3,4,5) .toArray() .subscribe(onSuccess: { print($0) }) // [1, 2, 3, 4, 5] 영상에는 .toArray()가 Observable인데 RxSwift 5.0부터는 Single로 바뀐 듯 하다. 그래서 .subscribe(onNext: ) 가 안됨.. map swift에서 사용하는 map과 같다. 다른 것이 있다면 observable하게 작동한다는 점? Observable.of(1,2,3,4,5) .map { return $0 * 2 }.subscribe(onNext: { print($0) }).disposed(by: disposeB..
2020.04.18 -
[함수형 프로그래밍] Maybe & Either
Maybe 값의 부재 가능성을 표현 funtor이자 monad 값이 nil로 변할 가능성이 없는 transform의 경우 map사용(functor) 값이 nil로 변할 가능성이 있는 transform의 경우 flapMap사용(monad) Optional 이 곧 maybe enum Maybe { case None case Some(A) static func pure(_ value: B) -> Maybe { return .Some(value) func flapMap(_ f: (A) -> Maybe) -> Maybe { switch self { case .None: return .None case .Some(let value): return f(value) } } func map(f: (A) -> B) -> ..
2020.04.10