본문 바로가기

iOS/iOS6

[iOS] leading, trailing과 left, right leading, trailing과 left, right의 차이점이 무엇일까? Apple은 공식적으로 left/right constraint 보다 leading/trailing의 사용을 권장하고 있다. left/rignt은 사용자가 보는 화면상의 왼쪽과 오른쪽 위치 속성이다. 반면에 leading/trailing은 reading direction의 시작과 끝을 나타내는 위치 속성이다. Reading Direction? 우리가 주로 사용하는 언어(한국어, 영어)는 왼쪽에서 오른쪽 순으로 읽는다. 이렇게 읽는 방향을 'reading direction'이라고 하는데 사용자가 설정한 언어에 의해 영향을 받는다. 글을 읽는 순서가 다르면 당연히 사용자 경험도 달라지기 때문에 아래처럼 다른 UI를 만나게 된다. 즉,.. 2022. 9. 30.
[iOS] Lottie Animation Color 수정(ColorValueProvider) iOS 앱 개발 중 다크모드 적용을 위해 애니메이션의 컬러를 변경해야 했다. Lottie 애니메이션은 런타임에 기본적으로 렌더링되므로 프로그래밍 방식으로 수정하는 것이 가능하다. Value Provider란, 개발자가 런타임에 애니메이션 속성을 쉽게 수정하기 위해 활용할 수 있는 클래스이다. Lottie 애니메이션 내의 모든 요소는 노드로 표시되며, 노드에 액세스하려면 해당 노드의 키 경로(key path)를 알아야 한다. print(AnimationView.logHierarchyKeypaths()) 1. AnimationView.logHierarchyKeypaths()로 경로를 확인한다. 모든 애니메이션의 주요 경로가 나열되어 있으므로 Value Provider를 사용하여 Lottie 애니메이션을 수.. 2021. 11. 30.
[iOS] 화면 터치, Return/Enter 시 키보드 내리기(Hide keyboard) 1. 화면 터치 UIViewController의 터치 관련 메소드 중에 touchesBegan 메소드가 있다. ViewController에 아래 코드를 추가하면 화면 터치 시 키보드가 내려간다. class ViewController: UIViewController { ... override func touchesBegan(_ touches: Set, with event: UIEvent?) { self.view.endEditing(true) } } 2. Return 키 화면 터치 외에도 TextField에서 입력을 완료한 후 Return 키를 눌렀을 경우 키보드가 내려가는 상황을 가장 많이 경험할 수 있다. TextField에서 키보드의 return 키를 누르면 resignFirstResponder()을 .. 2021. 11. 15.
[iOS] UISheetPresentationController로 Bottom Sheet 띄우기 UISheetPresentationController? 시트의 모양과 동작을 관리하는 프레젠테이션 컨트롤러이다. WWDC 2021에서 새로운 UISheetPresentationController를 사용하여 시트를 띄울 수 있는 방법을 제시했다. 새로운 UISheetPresentationController는 높이를 조정하고, 상단에 grabber를 추가하는 등 더욱 간단하게 구현할 수 있도록 해준다. How to use it 현재 ViewController에서 시트로 띄우고자 하는 다음 ViewController를 정의한다. class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } @IBAction.. 2021. 11. 15.
[iOS] Custom font 적용 안 될 때 해결 방법 문제 아래처럼 extension으로 UIFont를 정의하고 View에서 사용하고자 할 때 적용이 되지 않는다. extension UIFont { enum Family: String { case Bold, Light, Medium, Regular, Thin } static func noto(size: CGFloat, family: Family) -> UIFont! { return UIFont(name: "noto_sans_cjk_kr_\(family)", size: size) } } text.font = UIFont.noto(size: 16, family: .Regular) 해결 방안 1. Font 파일 안에 적용하고자 하는 폰트를 넣고 Target Membership 체크를 했는지 확인한다. 2. inf.. 2021. 11. 15.
[iOS] TextField 첫 영문자를 소문자로 시작하기 self.textField.autocapitalizationType = .none TextField에 영문자를 입력하면 제일 첫 글자를 대문자로 자동으로 변환해서 보여준다. 이 부분을 소문자로 나오도록 하는 방법이다. 2021. 11. 15.