본문 바로가기

IT/Swift

(35)
SwiftUI 튜토리얼 1-2 뷰의 생성과 조합 커스텀 이미지뷰(Create a Custom Image View) 이름과 위치를 설정함과 함께 다음으로 할 일은 랜드마크에 대한 이미지를 추가하는 것입니다. 파일에 더 많은 코드를 추가하는 대신에 이미지에 마스크, 테두리, 그림자 효과 등을 적용하는 커스텀 뷰를 만들어볼 것입니다. With the name and location views all set, the next thing to do is to add an image for the landmark. Instead of adding more code in this file, you’ll create a custom view that applies a mask, border, and drop shadow to the image. 프로젝트 에셋 카탈로..
SwiftUI 튜토리얼 1-1 뷰의 생성과 조합 SwiftUI Essentials - Creating and Combining Views SwiftUI 튜토리얼 1 드디어 swiftUI를 좀 보려고 합니다. swiftUI에 대해서 듣고 가장 먼저 떠올랐던 건 예전 iPhone 3gs 모델이 한국에 처음 들어올 때 나왔던 TV광고가 떠올랐습니다. 비 개발자들이 한 명씩 나와서 자기가 만든 앱을 소개하곤 들어가는 간단한 내용이었습니다. 자세히는 기억 안 나지만 기억을 더듬어보면 사람이 나와서 "상사 뺨 때리는 앱을 만들었는데 손맛이 나름 있더라고요 앱스토어에서 만나보세요" 대충 뭐 이런 말 하고 사라집니다. 이게 바로 코앞이구나 생각했습니다. 애플이 앱스토어를 만든 궁극적인 목적은 프로그래머가 아니어도 앱을 쉽게 만들어서 너도 나도 올릴 수 있게 하는 것..
SwiftUI - UIHostingController UIHostingController란 우선 애플 도큐먼트 먼저 보겠습니다. 공식 문서 먼저 보는 습관을 들이는 게 좋으니까요! https://developer.apple.com/documentation/swiftui/uihostingcontroller 들어가 보시면 아무것도 없습니다. 공식 문서 먼저 보는 습관이 좋다는 말을 다시 넣어둡니다. swiftUI의 view(contentView)를 나타내며 UIViewController를 상속받고 있어서 swiftUI를 사용하지 않는 기존 프로젝트들의 UIVIewController들과도 호환이 가능합니다. UIViewController에서 UIHostingController 사용하는 법을 보겠습니다. swiftUI를 사용하지 않는 프로젝트를 엽니다. story..
SwiftUI 시작하기 SwiftUI 시작하기 원문 : https://developer.apple.com/kr/xcode/swiftui/ 애플 개발자 싸이트에 있는글을 그대로 복사해왔습니다. 문제시 삭제하겠습니다. 더 우수한 앱. 더 적은 코드. SwiftUI는 Swift의 성능을 바탕으로 모든 Apple 플랫폼에서 사용자 인터페이스를 구축할 수 있는 혁신적이고 간소화된 방법입니다. 단 하나의 도구 구성 및 API를 통해 모든 Apple 기기에서 사용할 수 있는 사용자 인터페이스를 구축합니다. 읽기 쉽고 작성하기 편한 선언적 Swift 구문을 통해 SwiftUI는 새로운 Xcode 디자인 도구와 매끄럽게 연동되면서 코드와 디자인이 완벽하게 동기화되도록 합니다. 또한 유동적 글자 크기 조절, 다크 모드, 현지화 및 손쉬운 사용을..
[swift] throw, do-catch, rethrows, defer [swift 기초문법] - throw, do-catch, rethrows, defer throw throw 키워드를 쓰면 함수, 메서드, 이니셜라이저는 오류를 던질 수 있습니다. throws 키워드를 사용한 함수는 동작 도중 오류가 발생하면 호출한 코드에 오류를 알릴 수 있습니다. 같은 이름의 throw가 명시되지 않은 함수와 구분됩니다. throw를 포함한 메서드, 이니셜라이저는 메서드, 이니셜라이저로 재정의 될 수 없습니다. 반대의 경우는 가능합니다 (throw가 없는 함수가 있는 함수로 재정의) enum ErrorReason: Error { case none case invalid } func vend() throws { var testError: Int? = nil guard let test = ..
[swift] Binding, Tuple, Where [swift 기초문법] - 값 바인딩(Binding), Where 절 값 바인딩 패턴(Value-Binding Pattern)이란 변수 또는 상수의 이름에 매치된 값을 할당하는 것입니다. 크게는 식별자 바인딩과 옵셔널 바인딩을 들 수 있습니다. 식별자 바인딩은 튜플로 예시를 들어보겠습니다. let sampleTuple = ("sample", 77) switch sampleTuple { case let (category, number) : print("Category is \(category), Number is \(number)") // Category is sample, Number is 77 } 옵셔널 바인딩 예 let optionalValue: Int? = 0 if let realValue = op..
[swift] Wildcard, Nested Types [swift 기초문법] - 와일드카드(Wildcard), 타입 중첩(Nested Types) 와일드카드란 언더바 '_' 로 표현을 합니다. 와일드카드를 사용하는 곳의 값은 무시된다는 뜻입니다. swift문, for-in문, closure 등 곳곳에서 사용됩니다. swift 구문에서 와이들카드 사용예 let value = 0 swift value { case _: print(value) //이렇게 쓰이게되면 value가 어떤 값이라도 해당 case문이 항상 실행됩니다. } let tupleValue = ("sample", 999, "A") swift tupleValue { case ("sample", _, _): print("sample tuple") //튜플의 맨 처음 값이 sample이면 실행됩니다. ..
[swift] POP (Protocol Oriented Language) [swift 기초문법] - 프로토콜 지향 프로그래밍(Protocol Oriented Language, POP) 스위프트(swift)니 코틀린(Kotlin)이니 요즘 프로토콜 지향 프로그램이란 말이 참 여기저기서 많이 들리고 있습니다. 그럼 프로토콜 지향 프로그래밍이란(POP란) 뭘까요? 저는 프로토콜 지향 프로그래밍 안에 객체 지향 프로그래밍이 있고 객체 지향 프로그래밍 안에 절차 지향 프로그래밍이 있다고 생각합니다. 이 말을 풀어보겠습니다. 절차 지향이란(Procedural programming) 대표적으로 C언어가 있지요 프로시저의 호출을 바탕으로 하며 실행되어야 하는 기능들이 함수의 흐름이 주가 되어 상호작용을 합니다. 그러다 보니 모듈화가 어렵기 때문에 유지 보수가 힘든 반면 객체지향은 유지 보수..