iOS/SwiftUI

iOS/SwiftUI

[SwiftUI] 왜 body에서 변수를 수정하지 못할까?

* 이 글은 작성자의 학습을 위하여 작성된 글입니다. 개발자는 animal이라는 변수를 통해 중앙의 Text를 바꾸고 싶습니다. 우선, 변경 버튼을 누르면 토끼라는 텍스트를 사자로 바꾸려합니다. Button의 클로저 영역에 버튼을 눌렀을 때, animal 변수의 값을 "사자"로 바꾸자고 생각합니다. 개발자는 너무 당연하게 animal = "사자" 라고 코드를 작성합니다. 어라! 에러메세지가 발생합니다. 왜 안될까요? 가장 먼저 에러메세지를 읽어봅니다. self가 불변이다. 여기서 self는 ContentView 입니다. ContentView가 불변이라는 뜻이겠군요. 왜 ContentView가 불변이라는 걸까요? ContentView에 대해 들여다 볼 시간입니다. ContentView는 View 프토토콜을..

iOS/SwiftUI

[SwiftUI] some View에 대해서, some과 Opaque Type

해당 포스팅은 작성자의 학습을 위해 작성된 글 입니다. Opaque Type이란? Opaque Type(불투명한 타입)은 함수로 역제네릭 함수라고 할 수 있습니다. 함수나 메서드의 반환 타입이 특정 프로토콜을 준수하지만, 구체적인 타입은 숨겨짐을 의미합니다. Swift에서는 some 키워드에 Opaque Type을 담아냅니다. 더 쉽게 이해해보겠습니다. SwiftUI의 View 프로토콜은 모든 뷰가 가지고 있어야 할 가장 기본적인 기능을 정의하고 있습니다. View 프로토콜에서 기본 규칙은 var body: some View { get } 프로퍼티를 생성하는 것입니다. 이 body 프로퍼티는 뷰의 내용을 구성하고, 화면에 어떻게 표시될지를 결정하는 역할을 합니다. 예를 들어, ContentView 구조..

iOS/SwiftUI

[SwiftUI] SwiftUI를 소개합니다.

* 이 글은 작성자의 학습을 위하여 작성된 글입니다. 2019년, WWDC 2019에서 Apple은 SwiftUI를 소개했습니다. iOS 13과 macOS Catalina 10.15에서 처음으로 지원되기 시작했습니다. SwiftUI의 등장은 Apple 플랫폼에서 UI 개발 방식에 큰 전환점을 가져옵니다. 선언적(Declarative) 프로그래밍 SwiftUI는 선언형 프로그래밍으로, 개발자가 UI의 최종 상태를 선언하면 시스템이 상태변화를 자동으로 처리하여 UI에 대한 코드가 더 간단하고 직관적입니다. 이전의 UIKit은 명령형 프로그래밍으로, UI 요소를 각각 단계별로 관리하고 상태 변화도 수동으로 처리해야했습니다! 명령형 VS 선언형, 무엇이 다를까? 예시로 아보카도 토스트를 만든다고 가정해봅시다. ..

iOS/SwiftUI

[SwiftUI] Custom Font 추가와 Font Extension하기

Custom Font 추가하기 Pretendard라는 글꼴을 프로젝트에 추가하고자 한다. 하단 링크에서 파일을 다운받는다 Pretendard Pretendard 프리텐다드 Pretendard 프리텐다드 글꼴 다운로드 일본어 버전 다운로드 GitHub에서 보기 system-ui를 대체하는 글꼴 Apple의 system-ui가 익숙한 나로서는 San Francisco와 Apple SD 산돌고딕 Neo가 없는 cactus.tistory.com 다운받은 폰트를 Font 프로젝트에 추가한다. 이때 폰트는 반드시 프로젝트에 타겟하도록 한다. 타겟이 되지 않으면 적용되지 않는다. 프로젝트의 info에서 Fonts Provided by application을 추가한다. 추가한 모든 파일을 확장자명까지 적는다. 성공적으..

iOS/SwiftUI

[Udemy : SwiftUI+SwiftData Masterclass] Section 10. AFRICA

⭐️ 핵심 강의 내용 How to decode a JSON file and fetch data Create a dynamic List using Generics and JSON data. Create video player Map with custom Annotations 💡 JSON file 이란? JavaScript Object Notation 👉JSON Structure 기본 구조 key : value Object {} Array [] String "" Colon : Comma , JSON의 기본 예시 [ { "name" : seou, "age" : 22, "favefood" : [ "kimbap", "sulbing", "cake" ] } ] ❗️How to decode JSON file Codab..

iOS/SwiftUI

[Day 9] 클로저(Closure), passing functions into functions

1️⃣ 클로저 이름 없이 일시적으로 사용할 수 있는 함수 별도의 함수 생성을 건너뛰고 상수나 변수에 직접 기능을 할당할 수 있다. 함수나 매서드의 매개변수로 전달하거나 변수에 저장할 수 있다. 클로저 문법의 기본구조 { (매개변수: 매개변수타입) -> 반환타입 in // 클로저의 실행 코드 } in : 매개변수와 반환타입 선언을 클로저 실행코드와 구분하기 위한 키워드 중괄호 안에 매개변수를 넣는다. 앞에 let 또는 var을 필요로한다.

iOS/SwiftUI

[Day 8] 함수의 매개변수에 기본값 제공, throwing functions

1️⃣ 함수의 매개변수에 기본값 주기 func printTimesTables(for number: Int, end: Int = 12) { for i in 1...end { print("\(i) x \(number) is \(i * number)") } } printTimesTables(for: 5, end: 20) printTimesTables(for: 8) 함수에서 매개변수 end의 기본값을 설정했기 때문에 printTimesTables를 사용할 때 end에 대한 값을 주지 않아도 된다. 2️⃣ 함수의 오류를 핸들링하는 방법 이해가 어려우니 예시와 함께 알아보자. [예시] 비밀번호를 설정하는데, 설정할 비밀번호의 안전성을 확인하는 함수를 작성하고자 한다. ①5자 미만의 너무 짧은 비밀번호와 ②12345..

iOS/SwiftUI

[Day 7] 함수, 매개변수, 반환값

1️⃣ 반환값이 없는 경우 func 함수이름(매개변수) { 실행할 코드 } //예시 1 func printWelcome() { print("Hi there!") } printWelcome() //예시 2 : Accepting parameters func count(to: Int) { for i in 1...to { print("I'm counting: \(i)") } } count(to: 3) 2️⃣ 반환값이 있는 경우 func rollDice() -> Int { return Int.random(in: 1...6) } let result = rollDice() print(result) 💡 반환값이 있는 경우에서 return 을 생략할 수 있다! (Swift 5.1부터 가능해진 기능) func greet(..

iOS/SwiftUI

[SwiftUI] Setting App Icon

SwiftUI와 UIKit을 함께 사용하여 앱 아이콘 변경 기능을 구현할 수 있다. Solution 1. UIApplication.shared: 현재 앱의 UIApplication 인스턴스에 접근한다. UIApplication은 iOS 앱의 중심에 위치한 클래스로, 앱의 라이프사이클과 다양한 앱 레벨의 동작을 관리한다. setAlternateIconName: 이 메서드는 앱 아이콘을 변경하는 역할을 한다. 메서드에는 변경할 아이콘 이름이 전달돼야 한다. error가 nil이 아닌 경우(앱 아이콘 변경 실패)는 에러 메시지를 출력, 앱 아이콘 변경 성공시 성공 메시지 출력. UIApplication 이란? 더보기 iOS 앱의 중앙 관리 객체로, 앱의 라이프사이클과 앱 레벨 동작을 관리하는 클래스 UIApp..

iOS/SwiftUI

[Day 6] 반복문 : Loop (for, while), break & continue

1️⃣ For Loop let platforms = ["iOS", "macOS", "tvOS", "watchOS"] for os in platforms { print("Swift works great on \(os).") } 중괄호 안의 코드를 loop body라 한다. 루프는 반복문 내부에서만 존재한다. array, dictionary, or set 에서 이와 같은 반복문을 사용한다. for i in 1...5 { print("Counting from 1 through 5: \(i)") } for i in 1..

쨈미니
'iOS/SwiftUI' 카테고리의 글 목록