Custom Navigation Button
·
SwiftUI
Custom Navigation Button 만들기 커스텀 네비게이션 버튼을 만들기 위해서는 먼저 .toolbar 를 사용해야합니다. ToolbarItem 을 사용하여 placement 를 .navigationBarTrailing 으로 지정하여 네비게이션 상단 우측 버튼 위치에 원하는 버튼을 만들어줍니다.struct ContentView: View { @Environment(ApplicationData.self) private var appData var body: some View { NavigationStack { List(appData.userData) { book in CellBook(book: book) }.navigationTit..
completion, @escaping
·
SwiftUI
@escaping@escaping 은 클로저(closure)가 함수를 벗어나서 실행될 수 있음을 나타내는 특별한 프로퍼티입니다. 이것은 비동기 작업이나 클로저가 함수의 실행이 완료된 후에 호출되어야 하는 경우에 유용합니다.기본적으로 Swift에서 함수의 클로저 매개변수는 함수 내에서만 실행되고 함수가 종료되면 클로저도 함께 종료됩니다. 하지만, escaping 클로저는 함수의 범위를 벗어나서(escape) 함수가 종료된 후에도 호출될 수 있습니다.예를 들어, 비동기 작업을 수행하는 함수에서 escaping 클로저를 사용하는 경우의 예제 코드입니다.func performAsyncTask(completion: @escaping () -> Void) { DispatchQueue.global().async..
MVVM Design Pattern
·
SwiftUI
Design Pattern 을 사용하였을 경우 어떤 이점이 있는가?개발 속도를 향상 시켜줍니다.SwiftUI 에서만 사용가능한 것이 아니라 다른 언어들에서도 사용이 가능합니다.코드를 유연하게 해주며 재사용 및 유지보수를 더 간편하게 해줍니다. 그러면 과연 MVVM 은 무엇의 약자인가?M: ModelV: ViewVM : ViewMVVM은 M, V, VM 으로 나눠진 약자입니다.  Model 에서 View 로 바로 접근하는 방법은 왜 안좋은 것인가?이유는 model 클래스는 뷰에 보여주지 않을 많은 로직, 비즈니스 규칙을 포함할 수 없기 때문입니다. 이러한 이유로 ViewModel 를 사용합니다. Model 이 View 에 무언가를 보여주고 싶을 경우 또는 View 가 Model 에 접근을 해야할 경우 Vi..
Published
·
SwiftUI
Published 는 데이터가 다른 곳에서도 사용될 수 있도록 (널리알리는) 만들어주는 프로퍼티 래퍼입니다. 프로퍼티를 @Published 프로퍼티 래퍼를 사용하여 Publishing 하여 다른 곳에서도 사용될 수 있도록 해줍니다. @Published 프로퍼티 래퍼는 $ 연산자와 함께 사용되며 아래 예제 코드처럼 사용될 수 있습니다.final class MyViewModel: ObservableObject { @Published var isOn = false func toggle() { isOn.toggle() }} 만일 프로퍼티가 변경될 시 published 로 선언된 프로퍼티는 @ObservedObject 프로퍼티 래퍼를 사용하여 즉각적으로 대응을 할 수 있습니다.struct MyVie..
Chart Proxy
·
SwiftUI
ChartProxyChartProxy를 이용하면 차트의 x,y 값에 접근할 수 있습니다. 또한 position, value 함수를 통해서 주어진 데이터값의 위치와 주어진 위치의 데이터값을 구할 수 있습니다.position: 주어진 값의 위치를 가져옵니다.value: 주어진 위치의 데이터값을 가져옵니다. 아래 코드에서는 charOverlay에서 ChartProxy를 사용하여 proxy.plotContainerFrame 를 통해 plot 을 담고 있는 컨테이너의 프레임을 plotFrame 인스턴스로 받아 "My Chart" 라는 Text를 중앙에 위치시키는 코드입니다.struct ContentView: View { @Environment(ApplicationData.self) private var app..
DownLoading Image from server (AsyncImage)
·
SwiftUI
서버로부터 이미지를 다운받는 방법으로는 AsyncImage가 대표적으로 있습니다. AsyncImage 구조체는 서버 주소로부터 서버에 저장된 이미지를 다운 받을 수 있는 방법입니다. 이 구조체는 URLSession 인스턴스를 사용하여 URL로부터 이미지를 가져오고 출력합니다. 다음은 서버로부터 이미지를 가져오는 예시 코드입니다. 이미지를 가져오기 전까지 view는 표준 placeholder로 임시로 공간을 나타냅니다. 이후 성공적으로 이미지를 가져온다면 view는 이미지를 뷰에 업데이트합니다. 위에 예시 코드를 실행시키면 아래처럼 바뀌게 되는데 placeholder 보다 서버로부터 가져온 이미지가 더 작을 수 있습니다. 또한 init(url:scale:content:placeholder:)를 사용하여 커..
ytw_developer
'SwiftUI' 카테고리의 글 목록 (26 Page)