본문 바로가기

SwiftUI

(3)
[SwiftUI] 버튼 스타일 (ButtonStyle) 만들어 쉽게 재사용하기 앱 하나에 사용하는 버튼 스타일은 보통 규격화되어 있습니다. 따라서 버튼을 추가할 때마다 해당하는 스타일 값을 일일이 세팅하게되면 매우 수고스러운 일일 것입니다. UIKit을 사용하고 있다면 UIButton 클래스를 상속받아 커스텀 클래스를 활용하여 이 문제를 해결하였을 것입니다. SwiftUI에서는 ButtonStyle 프로토콜을 채용한 구조체를 만들어 쉽게 버튼 스타일을 재사용할 수 있습니다. ButtonStyle을 적용하지 않은 Button Button(action: viewModel.refresh) { Text(viewModel.refreshButtonTitle) } .frame(width: 230, height: 45) .font(.system(size: 14)) .foregroundColor(..
[SwiftUI] AutoLayout의 Center Y 처럼 비율 위치를 구현하는 방법 UI를 구현할 때, 오토레이아웃(AutoLayout) 방식으로 디자인 가이드를 구현해왔다면 SwiftUI를 처음 맞닥뜨리게되면 조금 당황스러울 수 있습니다. UI 그리는 개념이 완전히 다르기 때문입니다. 뭔가 안드로이드에서 UI를 그리는 방식과 닮은 느낌이 납니다. 오늘은 제가 받은 디자인 가이드에서 조금 난해했던 부분을 공유하고자 합니다. 디자인 가이드 예시는 다음과 같습니다. 초록색 원의 Y 위치가 고정값(pt)이 아닌 비율(%)로 나타내어져 있습니다. AutoLayout을 사용했다면 아래 처럼 간단하게 해결했을 것입니다. 하지만 SwiftUI 에서는 이런 방식이 불가능 합니다. 어떻게 하면 그나마 간단하게 구현할 수 있을지 고민 하였습니다. 해결 방법은 GeometryReader, VStack, S..
[SwiftUI] Property wrappers for data flow SwiftUI 는 애플리케이션에서 일어나는 데이터 흐름을 관리하는 몇 가지 도구들을 제공합니다. Swift 5.1 에 추가된 Property wrapper는 변수의 기능을 한 단계 업그레이드 시켜줍니다. SwiftUI 에도 특정한 wrapper가 있습니다. 바로 @State, @Binding, @ObservedObject, @EnvironmentObject 입니다. 이 wrapper들은 변수에 의해 표현된 데이터에 대한 View의 의존성을 선언하는 역할을 합니다. 설명이 너무 어렵나요? 그럼 하나씩 살펴보도록 하겠습니다. 😎 @State @State 로 지정된 변수들은 View가 해당 변수들을 소유(own)합니다. 일시적인 것이 아닌 View가 메모리에 살아있는 한, 해당 변수는 메모리에 할당되어 있음을..