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

[SwiftUI] Setting App Icon

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

iOS/SwiftUI

[SwiftUI] AppStorage란?

개요 @AppStorage는 SwiftUI에서 사용되는 프로퍼티 래퍼의 하나로, 앱의 데이터를 간단하게 UserDefaults(사용자 기본 설정)에 저장하고 불러오는 기능을 제공한다. iOS 14부터 도입된 기능으로, 이전에는 @State와 UserDefaults.standard를 직접 조합하여 사용해야 했던 기능을 간편하게 사용할 수 있게 해준다. 사용 예시 @AppStorage 를 사용하여 저장할 데이터 타입에 맞게 프로퍼티를 선언한다. 예를 들어, 문자열 데이터를 저장하려면 다음와 같이 선언할 수 있다. @AppStorage("username") var username: String = "" 위 코드에서 "username"은 UserDefaults에서 이 데이터를 식별하기 위한 key로 사용한다. ..

iOS/SwiftUI

[SwiftUI] How to add color gradients

colors : [ ] 에는 1개 이상의 색이 들어갈 수 있다. LinearGradient는 시작점과 끝점을 반드시 지정해야한다. Text, Image, 다양한 도형들에 적용 할 수 있다.

iOS/SwiftUI

[SwiftUI] Color Extension

오늘은 SwiftUI에서 색상을 더욱 편리하게 사용하는 방법에 대하여 알아보겠습니다. Assets에서 새로운 Color Set을 생성하여 색을 지정할 수 있습니다. 지정한 색상을 통해 우리는 더욱 다양한 색들로 디자인을 미적으로 만들 수 있습니다. 새로운 Color Set을 추가합니다. 원하는 색상을 지정하고 해당 색상의 이름을 변경합니다. foregroundColor를 통해 색을 입힙니다. 이때 매번 색상명을 입력해야한다는 번거로움이 발생합니다. 또한 색상명을 입력하는 중 오타가 발생할 경우, 올바르게 적용되지 않습니다. Swift 파일을 생성합니다. 위와 같이 코드를 입력합니다. 위 과정을 마쳤다면 Xcode의 자동완성 기능의 도움을 받아 보다 더 편리하게 작업할 수 있습니다. 위와 같은 과정을 통해..

쨈미니
'SwiftUI' 태그의 글 목록