* Mobile Accessibility (모바일 접근성) 이란? Mobile(모바일) + Accessibility(접근성) 으로 다음과 같이 정의를 내렸다. "모바일 기기 또는 어플리케이션의 설계 및 구현 단계에서 사용자를 보조하는 다양한 기능을 고려하여 제공함으로써, 사용자가 모바일 기기를 보다 편하게 사용 할 수 있게 하는 정도" 모바일 OS인 iOS와 Android는 더 나은 접근성을 보장하기 위하여 갖춰놓은 기능 들이 있는데, 대표적으로 시각장애인 들을 위한 Voice-Over (iOS), Talk-Back (Android) 이 있다. 지금부터 iOS에서 제공하는 Voice-Over의 경우에, Application 단에서 더욱 더 Accessible하게 동작하도록 하기 위한 방법 들을 알아보자...
View Controller를 Presenting 할 때 사용 할 수 있는 Modal presentation style을 알아보자. 1. fullScreen - presented view가 screen을 덮는다. - presenting view controller에 속한 view들은 presentation 완료 후 제거 된다. 2. pageSheet- iPad와 같은 Regular-width, Regular-Height 디바이스에서, presented view의 width는 세로 방향에서의 스크린의 width로, height는 스크린의 height로 설정 된다. - 덮이지 않는 영역은 사용자가 상호작용하지 못하도록 흐리게 표시 된다. - 세로 방향의 경우 이 옵션은 기본적으로 fullScreen과 동일하..
UIView 내의 레이아웃 관련 메소드인 layoutIfNeeded()와 setNeedsLayout(). 두 메서드 모두 layoutSubViews()를 호출하는 메소드이다. 먼저, layoutSubViews()에 대해 알아보자. * layoutSubviews()- 서브 뷰들을 배치한다. - 기본 구현에서는 서브 뷰 들의 크기와 위치를 결정하기 위해 설정한 제약조건을 사용한다. (iOS 5.1보다 상위 버전에서) - 서브 뷰의 정확한 레이아웃을 배치하기 위해 재정의하여 사용 할 수 있다.(서브 뷰의 프레임 사각형을 직접 설정할 수 있다) - 서브 뷰의 오토 리사이징과 제약 조건 기반 동작이 원하는 동작을 제공하지 않는 경우에만 재정의하여 사용해야한다) - 이 메소드를 직접 호출하면 안되고, setNeed..
UIView와 UIViewController를 상속하여 지정이니셜라이저를 작성할 때, 다음과 같은 에러와 마주하게 된다. 'required' 이니셜라이저인 'init(corder:)'를 정의해주어야 한다는 에러인데, 다음과 같이 정의만 해주면 에러 문구는 사라진다. required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } 왜 이런 에러가 발생하며 위와 같은 작업을 해주어야 할까? 바로, 이 NSCoding이라는 녀석 때문이다. public protocol NSCoding { public func encode(with aCoder: NSCoder) public init?(coder aDecod..