SwiftUI
-
List와 ScrollView+LazyVStack 비교하기Apple🍎/SwiftUI 2025. 3. 7. 00:04
List + TextEditor 리스트 내부 셀 안의 텍스트에디터에 내용이 많아지면 내부 스크롤이 활성화됨 ( 텍스트 에디터 크기도 살짝 늘어남 )ScrollView + LazyVStack + TextEditorLazyVstack 셀 안의 텍스트 에디터에 내용 있는 많아지면 그에 맞춰 텍스터 에디터 크기가 증가함 SwiftUI에서 List와 ScrollView+LazyVStack 조합이 TextEditor와 함께 작동할 때 다른 동작을 보이는 이유가 뭘까요?List와 ScrollView+LazyVStack의 기본적인 차이점List의 동작 방식List는 UITableView를 기반으로 한 컴포넌트로, 고정된 셀 높이나 자동 계산된 높이를 사용합니다. List는 내부적으로 콘텐츠의 크기를 미리 결정하고,..
-
Swift를 위한 람다 계산법 핵심Apple🍎/Swift 2025. 2. 25. 12:23
람다 계산법이란?람다 계산법은 계산을 함수 형태로 표현하는 형식체계로, 단 세가지의 규칙만으로 모든 계산을 표현할 수 있습니다. 이것이 오늘날 Swift를 포함한 현대 프로그래밍 언어의 함수형 프로그래밍 패러다임의 이론적 기반이 되었습니다. 람다 계산법 세 가지 핵심 요소 1. 변수(Variables) : 가장 기본적인 요소로, 값을 참조하는 이름입니다. Swift에서는 상수나 변수와 같습니다.let x = 10var name = "Swift"2. 추상화(Abstraction) : 함수를 만드는 방법입니다. 람다 계산법에서는 λx.M 형태로 표현하며, "x를 입력으로 받아 M을 계산하는 함수"를 의미합니다.λx.x // 항등 함수 (입력을 그대로 반환)λx.(x + 1) // 입력에 1..
-
Swift Student Challenge 프로젝트 후기Project/SoundScape 2025. 2. 22. 16:16
공간과 감각 혼자 작업할 때 허전한 기분이 들면 그 순간을 채워줄 BGM을 찾습니다. 유튜브를 살펴보면 다양한 플레이리스트들이 있는데, 특히 "카페에서", "해변에서", "공원에서"처럼 특정 장소를 키워드로 선정된 노래들을 들으면마치 그 장소에 와 있는 듯한 느낌이 들곤 합니다. 눈으로 보는 것이 많은 것들을 확정 짓지만, 느낌은 귀와 더 긴밀하게 연결되어 있는 듯합니다."분위기라는 단어가 주는 미묘한 느낌을 시각적으로 표현하면 어떨까?"라는 생각을 가지고 있었고, Swift Student Challenge에 참가하며 이 아이디어를 앱으로 구현해 보기로 했습니다. Sound + landscape프로젝트 이름은 Sound(소리)와 landscape(풍경)를 결합한 'Soundscape'로, '소리가 그리는..
-
SwiftUI 데이터 모델에 actor를 사용하면 안되는 이유Apple🍎/SwiftUI 2025. 2. 19. 22:44
Swift Actor 기본 개념Actor는 독립적인 실행 컨텍스트를 가지고 있으며, 이 컨텍스트 안의 데이터는 자동으로 동기화되어 안전하게 관리됩니다. 여러 작업(Task)이 동시에 Actor에 접근하려고 할때, 시스템은 이를 알아서 순차적으로 처리합니다. 마치 줄을 서서 차례를 기다리듯이, 한 번에 하나의 작업(Task)만 Actor의 데이터에 접근할 수 있게 되어 데이터 경장상태(race condition)을 효과적으로 예방할 수 있습니다. actor ChatRepository { private var messages: [Message] = [] func addMessage(_ message: Message) { messages.append(message) } ..
-
Scene과 Window의 관계Apple🍎/UIKit 2025. 2. 8. 23:20
시각적 요소와 상태 관리 시각적 요소 관리란 화면상에 보이는 모든 UI 컴포넌트들의 레이아웃, 크기, 위치, 계층 구조를 다루는 것을 의미합니다. 예를 들어 버튼의 위치, 텍스트 필드의 크기, 뷰의 계층 구조 등이 여기에 포함됩니다. 상태 관리란 UI의 현재 상황과 관련된 모든 데이터를 다루는 것을 의미합니다. 예를 들어 현재 선택된 탭, 스크롤 위치, 입력중인 텍스트, 네비게이션 스택의 상태 등이 이에 해당됩니다. 또한 UI의 생명주기 또한 상태관리의 일부입니다. UIKit과 SwiftUI의 생명주기 관리앱 생명주기어플리케이션 생명주기란 앱이 실행부터 종료까지의 과정 속에서 상태 변화를 다루는 개념이다. Not Running (실행되지 않음): 앱이 아직 시작되지 않았거나 완전히 종료된 상태를 의..
-
클린 아키텍처 쉽게 이해하기 with SwiftUI 🔍Apple🍎/SwiftUI 2024. 10. 29. 23:06
클린 아키텍처가 뭔가요?앱을 만들 때 코드를 역할별로 깔끔하게 나누는 방법이에요. 마치 서랍장에 물건을 종류별로 정리하는 것처럼, 코드도 하는 일에 따라 구분해서 관리하는 거죠.클린 아키텍처의 계층 구조 이해하기 📚계층이란? 🤔앱의 코드를 역할별로 나눈 각각의 층을 말해요. 각 계층은 자기만의 역할이 있고, 다른 계층과 약속된 방식으로만 소통해요. Domain Layer (핵심 계층) 💡앱의 가장 기본이 되는 부분이에요. 마치 집을 지을 때 기초 공사가 중요한 것처럼, Domain Layer는 앱의 핵심적인 데이터 모델과 이를 다루는 규칙들을 담고 있답니다.Entity: 실제 세상의 물건이나 개념을 앱 속에서 어떻게 표현할지 정하는 설계도예요.예를 들어 쇼핑앱을 만든다고 생각해볼까요?실제 상품을 앱..
-
SwiftUI와 UIKit 뷰 구성하는 법 비교하기 ( 선언형, 절차형 패러다임 비교)Apple🍎 2024. 9. 19. 23:52
SwiftUI - 선언형 프로그래밍선언형 프로그래밍에서는 "무엇"을 원하는지를 코드로 작성합니다.개발자는 원하는 결과를 설명하고, 시스템이 그 결과를 어떻게 달성할지 결정합니다.SwiftUI 예제다음 코드에서 개발자는 어떠한 컴포넌트들이 어떤 형태가 되어야하는지 결과 상태를 코드로 명시합니다.각 컴포넌트들이 어떻게 그 상태에 도달할지에 대한 설명은 하지 않습니다.VStack(spacing: 20) { Text("Hello, World!") Image(systemName: "star.fill") Spacer() Button("Tap me") { print("Button tapped") }}.padding()수직으로 요소들을 쌓고 싶다 (VStack)요소들 사이에 20..
-
SwiftUI가 선언형이라는게 무슨말일까?Apple🍎/SwiftUI 2024. 6. 11. 11:30
명령형 프로그래밍과 선언형 프로그래밍명령형 프로그래밍 (Imperative Programming)명령형 프로그래밍은 컴퓨터 프로그램을 상태와 상태 변화를 통해 기술하는 방식입니다. 프로그래머는 프로그램이 수행할 작업들을 순서대로 명령어로 기술하며, 각 명령어는 프로그램의 상태를 변경합니다. 대부분의 전통적인 프로그래밍 언어(C, C++, Java, Python 등)는 명령형 패러다임을 따릅니다.특징절차 지향적: 작업을 수행하는 구체적인 절차를 명시합니다.상태 관리: 프로그램의 상태를 변경하는 명령어를 통해 작업을 수행합니다.제어 구조: 반복문, 조건문, 함수 호출 등을 사용하여 프로그램의 흐름을 제어합니다.직관적 이해: 프로그램의 흐름을 직접 기술하므로 이해하기 쉽습니다.예제: Python으로 리스트의 ..