본문 바로가기

전체 글

(207)
Custom Font를 적용하고 싶다면? xcode에서 폰트를 수정하고 싶을 때 아래와 같은 코드를 통해서 수정할 수 있다. numberTextField.font = .systemFont(ofSize: 13, weight: .regular) numberTextField.font = .systemFont(ofSize: 13) numberTextField.font = .boldSystemFont(ofSize: 13) numberTextField.font = .italicSystemFont(ofSize: 13) 이 때 사용되는 폰트는 Apple에서 기본적으로 제공하고 있는 Apple SD Gothic Neo 체이다. (폰트 스타일은 아래와 같이 Bold, Heavy, Light .. 등이 있다.) Apple SD Gothic Neo체 말고도 시스템적..
ATS(App Transport Security) 애플에서 제공하거나 .. 애플에서 무언가를 한다면 .. 항상 느끼는 것은 애플의 보안성은 정말 ... 좋구나 .. 조금 더 안좋게 말하면 .. 엄청 폐쇄적이구나 .. 라는 것을 느낄 수 있다 애플의 경우 기본적으로 http로 시작하는 URL에 대한 접근을 제한하고 있다. 따로 설정을 하지 않고 허용하지 않은 외부 도메인에 접근하려고 한다면? App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file. 위와 같은 오류메시지가 나타난다. 그래서 앞서 말한 것과 같이 Ap..
UIResponder Responder Chain이 무엇일까? 우리가 처음 xcode 프로젝트를 만들면 생기는 파일 중 어쩌면 가장 중요하다고 할 수 있는 파일인 AppDelegate와 SceneDelegate를 보면 접할 수 있다. 이 두개의 클래스 모두 동일하게 UIResponder를 상속 받는다. 그렇다면, 먼저 UIResponder가 무엇인지 살펴보자. UIResponder는 An abstract interface for responding to and handling events. 이다. (뭔말이야) 이벤트에 응답 및 처리를 위한 추상 인터페이스 .. 이다. Responder 객체는 UIResponder의 인스턴스이다. 더보기 Responder 객체가 뭔데 .. Responder는 이벤트를 처리하고 반응할 수 있는 ..
Delegate? DatsSource? UIKit를 다루다보면 많이 접하는 개념이 Delegate와 DataSource이다. (예를 들면, UITableViewDeleate / UITableViewDataSource) 그러면, 모든 UIKit가 Delegate와 DataSource를 갖고 있을까? ... 그렇지는 않다. 예를 들어서 UITableView의 경우 둘 다를 채택할 수 있지만, UITextView의 경우는 Delegate만 채택할 수 있다. 그렇다면 Delegate와 DataSource의 차이는 무엇일까? 이름에서 어느정도 유추할 수 있다. Delegate의 경우, 대리자(누군가가 해야 할 일을 대신 해주는 것) .. 라는 의미가 있기 때문에 특정 역할을 담당, 즉 어떠한 기능을 담당하고 있다고 볼 수 있다. 그리고 DataSour..
프로퍼티 - 저장 프로퍼티 프로퍼티 .. 가 무엇인가 하면 .. 이름을 붙여서 조금 어렵게 느껴지는 것이지 단순하게 그러니까 쉽게 말하면 우리가 지금까지 열심히 작성한 클래스/구조체에서 선언하던 상수/변수를 말한다. 그리고 Swift에에서 프로퍼티는 크게 3가지로 나눌 수 있다. (그 안에서 프로퍼티 앞에 붙는 키워드에 따라서 조금 다르게 분류되기도 한다.) 저장 프로퍼티 연산 프로퍼티 타입 프로퍼티 이렇게 세개가 존재한다. 저장 프로퍼티 먼저, 저장 프로퍼티에 대해서 알아보자면, 클래스와 구조체에서만 사용할 수 있고, (이름처럼) 값을 저장하기 위해서 선언되는 상수/변수를 말한다. class Human { let name: String = "unknown" var age: Int = 0 } struct Person { let n..
some SwiftUI에서 자주 보이는 친구입니다 .. Overview struct MyFirstView: View { var body: some View { Text("Hello world!") } } 이렇게 SwiftUI에서 자주 보이는 some이라는 키워드가 있습니다. some 키워드는 Swift 5.1에서 새로 나타난 기능인데 무엇인지 알아보도록 하겠습니다. And the some keyword that we use here is a switch feature that lets swift infer out inter return type automatically. (= some 키워드는 리턴 타입을 자동으로 그리고 빠르게 추론할 수 있는 스위치 기능입니다.) some 키워드는 Swift 5.1의 새로운 기..
Any/AnyObject 타입 캐스팅의 연장선으로 알면 좋을 개념입니다. Any/Any Object 타입 캐스팅을 수행할 때 일반적으로 상속 관계에 있는 클래스끼리만 캐스팅이 가능하지만, Any와 AnyObject 타입을 사용할 경우 상속 관계에 있지 않아도 타입 캐스팅을 할 수 있습니다. 상속 관계에 있을 때 Up Casting(=as)와 Down Casting(= as? as!)을 할 수 있습니다. 그리고 앞서 말한 것처럼 Any와 AnyObject 타입인 경우 상속 관계가 아니어도 타입 캐스팅을 할 수 있습니다. 먼저, Any와 AnyObject에 대해서 알아보도록 하겠습니다. Any : 모든 타입 모든 타입을 저장할 수 있도록 하는 것이 Any입니다. Swift는 타입에 민감한 언어입니다. 그래서 만약, Int형 배열을 ..
UIViewPropertyAnimator UI의 애니메이션을 적용하기 위해서 UIView.animate를 많이 사용합니다. 그러나, 해당 메서드는 곧 deprecated 될 가능성이 높습니다. 💬 Use of these methods is discouraged. Use the UIViewPropertyAnimator class to perform animations instead. 위와 같이 공식 문서에서도 UIViewPropertyAnimator 사용을 권장하고 있습니다. 해당 프로토콜은 iOS 10이상부터 사용 가능한 API 입니다. (따라서, 프로젝트 타겟이 10이상인 프로젝트에서 애니메이션을 적용한다면, UIViewPropertyAnimator를 사용하는 것을 권장합니다.) 자세한 설명은 공식 문서를 통해서 살펴볼 수 있습니다. 🤔 UI..