SwiftUI 9

SwiftUI: Form을 활용한 입력 폼 제작하기

SwiftUI에서 사용자 입력을 받는 UI를 만들 때 Form을 활용하면 손쉽게 구조화된 입력 폼을 생성할 수 있습니다. Form은 설정 화면이나 회원가입 폼, 프로필 편집 화면 등에서 많이 사용됩니다. 이 글에서는 Form의 기본 개념부터 다양한 입력 요소(TextField, Toggle, Picker 등)를 활용하는 방법까지 상세히 알아보겠습니다.1️⃣ Form이란? SwiftUI의 Form은 정리된 형태의 입력 UI를 쉽게 구성할 수 있도록 도와주는 컨테이너입니다.UIKit의 UITableView 스타일과 유사하며, 섹션 단위로 그룹화하여 구성할 수 있는 것이 특징입니다. 📌 주요 특징:Form 내부에 다양한 입력 요소(TextField, Toggle, Picker 등)를 배치할 수 있음자동으로 ..

카테고리 없음 2025.02.20

SwiftUI에서 ForEach와 Identifiable 프로토콜 활용하기

SwiftUI에서 ForEach와 Identifiable 프로토콜 활용하기 ✅ SwiftUI에서 리스트를 다룰 때 필수적인 ForEach와 Identifiable SwiftUI에서는 ForEach와 Identifiable 프로토콜을 활용하여 반복적인 UI 요소를 효율적으로 만들 수 있습니다. 특히, List나 VStack, HStack 등에서 여러 개의 데이터를 표시할 때 유용합니다. 이 글에서는 ForEach와 Identifiable 프로토콜의 개념과 활용 방법을 자세히 설명하겠습니다.1️⃣ ForEach란 무엇인가? ForEach는 SwiftUI에서 반복적으로 뷰를 생성하는 데 사용되는 구조체입니다. Swift의 for-in 루프처럼 동작하지만, SwiftUI의 선언형 문법에 맞게 설계되었습니다. ?..

카테고리 없음 2025.02.20

SwiftUI: TabView Style 사용하기

SwiftUI의 TabView는 tabViewStyle(_:)을 사용하여 다양한 스타일을 적용할 수 있습니다. 공식 문서에서 제공하는 TabViewStyle의 종류와 특징을 알아봅시다! automatic시스템이 자동으로 적절한 스타일을 적용합니다.기본적으로 tabBarOnly 스타일을 사용하지만, 특정 상황에서는 page 스타일이 적용될 수 있습니다.플랫폼과 컨텍스트(예: iOS, iPadOS, macOS)에 따라 달라질 수 있습니다.플랫폼에 따라 다른 스타일을 사용하지만, iOS 에서는 기본적으로 Tab bars를, iPadOS와 macOS에서는 Tab views를 사용합니다. tabBarOnly하단 탭바를 표시하는 기본적인 TabView 스타일입니다.iOS에서 기본값.하단에 UITabBar처럼 탭바가..

카테고리 없음 2025.02.13

Refreshable: 당겨서 새로고침 적용하기

UIKit에서의 UIRefreshControl이 있다면 SwiftUI에서는 refreshable 수정자를 통해 쉽게 처리할 수 있습니다.  사용법 refreshable 적용:refreshable 모디파이어는 List나 ScrollView와 같은 스크롤 가능한 뷰에 적용할 수 있습니다. 사용자가 뷰를 아래로 당길 때 실행할 비동기 작업을 정의합니다.import SwiftUIstruct ContentView: View { @State private var items = ["Item 1", "Item 2", "Item 3"] var body: some View { List(items, id: \.self) { item in Text(item) } ..

카테고리 없음 2025.02.05

SwiftUI에서 Grid를 표현하는 방법: LazyVGrid, LazyHGrid, GridItem

Stack과 List를 사용하여 콘텐츠를 표시할 수 있지만 SwiftUI는 multi-column grid를 표시할 수 있는 방법이 있습니다. 바로 LazyVGrid, LazyHGrid, GridItem 입니다. GridItemGridItem은 LazyHGrid의 행 또는 LazyVGrid의 열을 나타냅니다. GridItem(sizing, spacing: CGFloat?, alignment: Alignment?)sizing은 GridItem.Size 타입으로, 선언될 수 있는 값은 다음과 같습니다.flexible() - 그리드의 행 또는 열의 수는 그리드에 전달된 GridItem의 인스턴스 수에 따라 결정됩니다.adaptive(minimum: CGFloat) - 행 또는 열의 크기는 사용 가능한 공간에 ..

카테고리 없음 2025.01.30

SwiftUI의 Animation

SwiftUI에서 애니메이션 동작을 추가하기 위해서는 withAnimation이라는 유틸리티 함수를 사용합니다. 애니메이션을 적용하는 코드 블록을 감싸서 상태 변화를 부드럽게 보이도록 만들 수 있습니다. 1. withAnimation 이란?withAnimation은 상태 값이 변경될 때 SwiftUI가 해당 변경사항을 애니메이션으로 표현하도록 지시하는 함수입니다. SwiftUI는 선언형 방식을 사용하기 때문에 상태가 변경되면 UI가 자동으로 갱신되는데, 이 과정에서 withAnimation을 사용하면 상태 변경에 따른 UI 업데이트를 부드럽게 연결합니다.struct WithAnimationExample: View { @State private var isExpanded = false var b..

카테고리 없음 2025.01.29

SwiftUI: View의 생명 주기

SwiftUI의 View 라이프사이클은 UIKit과는 다르게 선언형 프로그래밍 방식에 기반하며, View의 상태 및 데이터 변화에 따라 자동으로 업데이트됩니다.따라서 SwiftUI에서는 명시적으로 생명주기 메서드를 정의하지 않지만, 몇 가지 중요한 개념과 제공되는 메서드 및 프로퍼티를 통해 생명주기를 관리할 수 있습니다. 1. View 생성 및 초기화SwiftUI에서는 View는 데이터와 상태에 따라 필요할 때마다 다시 생성됩니다. View는 구조체이기 때문에 값 타입으로 동작하며, 무겁지 않은 생성 및 파괴가 가능합니다.주요 특징:View는 데이터(상태)가 변경될 때마다 새로 렌더링됩니다.뷰는 상태를 기반으로 UI를 업데이트하기 때문에 명시적인 업데이트 호출이 필요 없습니다.2. View의 상태 관리S..

카테고리 없음 2025.01.26

SwiftUI의 ViewThatFits 알아보기

SwiftUI의 ViewThatFits 개요 (Apple Developer 문서 요약): ViewThatFits는 여러 뷰 중에서 화면 공간에 가장 적합한 뷰를 자동으로 선택하여 렌더링하는 SwiftUI 컨테이너입니다. 공간 제약 조건에 따라 가장 잘 맞는 뷰를 찾아내므로, UI를 동적으로 조정해야 하는 상황에서 유용합니다. 주요 내용: • 기능:여러 하위 뷰를 포함할 수 있으며, 해당 공간 제약 조건에 가장 적합한 첫 번째 뷰를 렌더링합니다. 나머지 뷰는 렌더링되지 않습니다. • 사용법:ViewThatFits는 컨테이너로 동작하며, 내부에 여러 뷰를 정의합니다. 가장 먼저 조건을 충족하는 뷰를 선택합니다.ViewThatFits { Text("짧은 텍스트") Text("이 텍스트는 더 길어서 ..

카테고리 없음 2025.01.23

UIKit과 SwiftUI에서 HEX 색상 사용하기

일반적으로 디자이너는 색상을 HEX 코드로 제공하며, 이를 앱에서 사용하려면 적절히 변환해야 합니다. 하지만 기본적으로 UIColor와 Color는 HEX 코드를 직접 지원하지 않습니다.이 글에서는 UIKit의 UIColor와 SwiftUI의 Color에서 HEX 코드를 사용할 수 있도록 커스텀 생성자를 구현하고 활용하는 방법을 소개합니다.1. 왜 HEX 코드를 사용해야 할까?HEX 코드는 HTML, CSS 등에서 널리 사용되며, 색상을 간결하게 표현할 수 있습니다. 예를 들어, #FF5733는 붉은색 계열의 색상을 의미합니다. 이는 디자이너와 개발자 간의 커뮤니케이션을 단순화하며, 코드의 가독성을 높이는 데에도 유용합니다.하지만 UIKit과 SwiftUI에서는 기본적으로 HEX 코드를 지원하지 않기 때..

카테고리 없음 2025.01.21