iOS/SwiftUI
-
[참고 영상] https://youtu.be/3jjQ6WASGIw [학습 목표] ContextMenu란 카드나 버튼을 꾹 눌렸을때 해당 버튼이나 카드에서 추가 옵션이 뜨면서 수정이나 삭제등의 기능이 보이는 메뉴이다. 이와 같은 ContextMenu를 SwiftUI에서 구현해서 사용해보자! [구현 방법] SwiftUI에서의 ContextMenu는 UIKit과는 다르게 이미 구현이 되어 있어서 매우 쉽게 사용이 가능하다. 그럼 이제부터 어떻게 ContextMenu를 사용하는지 살펴보자. 1. 우선은 ContextMenu를 사용하기 위해서 꾹 눌려야 하는 카드를 만들어보자. @State var backgroundColor: Color = Color(.blue) VStack(alignment: .leading,..
[SwiftUI] How to use ContextMenu in SwifUI[참고 영상] https://youtu.be/3jjQ6WASGIw [학습 목표] ContextMenu란 카드나 버튼을 꾹 눌렸을때 해당 버튼이나 카드에서 추가 옵션이 뜨면서 수정이나 삭제등의 기능이 보이는 메뉴이다. 이와 같은 ContextMenu를 SwiftUI에서 구현해서 사용해보자! [구현 방법] SwiftUI에서의 ContextMenu는 UIKit과는 다르게 이미 구현이 되어 있어서 매우 쉽게 사용이 가능하다. 그럼 이제부터 어떻게 ContextMenu를 사용하는지 살펴보자. 1. 우선은 ContextMenu를 사용하기 위해서 꾹 눌려야 하는 카드를 만들어보자. @State var backgroundColor: Color = Color(.blue) VStack(alignment: .leading,..
2022.11.09 -
[참고 영상] https://youtu.be/fTtaEYo14jI [학습 목표] 저번까지 Task의 우선순위와 Task란 무엇인지에 대해서 배워봤다. 하지만 실제로 앱이 실행된다면 유저들의 동작에 따라서 이전에 실행하던 동작이 그만둬야 될 때가 올것이다. 이러한 때를 대비하여 Task의 취소 방법에 대해서 배워보자! [구현 방법] 우선은 Task의 동작을 그만둬야 할 때가 어떠한 때인지에 대해서 배워보도록 하자. 현재 보고 있는 화면은 Navigation을 통해서 들어갔을 때 이미지가 뜨게 하는 화면이다. 현재 화면에서는 일부러 2초가 늦게 뜨게 하였지만 인터넷 서버의 문제 혹은 네트워크의 문제 등으로 인하여 이미지가 늦게 뜨게 되는 경우는 많을 것이다. 이와 같은 상황에서 유저들은 뒤로 갔다가 다시 오..
[SwiftUI] Task and .task in Swift - 3[참고 영상] https://youtu.be/fTtaEYo14jI [학습 목표] 저번까지 Task의 우선순위와 Task란 무엇인지에 대해서 배워봤다. 하지만 실제로 앱이 실행된다면 유저들의 동작에 따라서 이전에 실행하던 동작이 그만둬야 될 때가 올것이다. 이러한 때를 대비하여 Task의 취소 방법에 대해서 배워보자! [구현 방법] 우선은 Task의 동작을 그만둬야 할 때가 어떠한 때인지에 대해서 배워보도록 하자. 현재 보고 있는 화면은 Navigation을 통해서 들어갔을 때 이미지가 뜨게 하는 화면이다. 현재 화면에서는 일부러 2초가 늦게 뜨게 하였지만 인터넷 서버의 문제 혹은 네트워크의 문제 등으로 인하여 이미지가 늦게 뜨게 되는 경우는 많을 것이다. 이와 같은 상황에서 유저들은 뒤로 갔다가 다시 오..
2022.10.02 -
[참고 영상] https://youtu.be/fTtaEYo14jI [학습 목표] 저번시간에는 Task란 무엇인지에 대해서 배워봤다. 이번시간에는 Task는 그렇다면 똑같이 동기화되어서 실행되는지 혹은 먼저 실행시키고 싶은 Task가 있다면 어떻게 해야 하는지에 대해서 배워보자. [구현 방법] Task의 경우에는 synchronous코드 이기 때문에 await이 asynchronous코드라고 하더라도 await의 완료를 기다리지 않고 위에 있는 Task가 실행 된 바로 다음에 다음 Task를 실행하기 때문이다. 이와 같은 Task에도 우선 순위가 있다. Task(priority: .high) { print("high : \(Thread.current) : \(Task.currentPriority)") } ..
[SwiftUI] Task and .task in Swift - 2[참고 영상] https://youtu.be/fTtaEYo14jI [학습 목표] 저번시간에는 Task란 무엇인지에 대해서 배워봤다. 이번시간에는 Task는 그렇다면 똑같이 동기화되어서 실행되는지 혹은 먼저 실행시키고 싶은 Task가 있다면 어떻게 해야 하는지에 대해서 배워보자. [구현 방법] Task의 경우에는 synchronous코드 이기 때문에 await이 asynchronous코드라고 하더라도 await의 완료를 기다리지 않고 위에 있는 Task가 실행 된 바로 다음에 다음 Task를 실행하기 때문이다. 이와 같은 Task에도 우선 순위가 있다. Task(priority: .high) { print("high : \(Thread.current) : \(Task.currentPriority)") } ..
2022.10.02 -
[참고 영상] https://youtu.be/fTtaEYo14jI [학습 목표] 다른 종류들의 Task를 다루면서 Task가 무엇인지에 대해 알아보자! [구현 방법] 1. image를 가져오는 함수를 2가지를 만들어서 가져오는 방법. func fetchImage() async { do { guard let url = URL(string: "https://picsum.photos/200") else {return} let (data, _ ) = try await URLSession.shared.data(from: url, delegate: nil) self.image = UIImage(data: data) } catch { print(error.localizedDescription) } } func fet..
[SwiftUI] Task and .task in Swift[참고 영상] https://youtu.be/fTtaEYo14jI [학습 목표] 다른 종류들의 Task를 다루면서 Task가 무엇인지에 대해 알아보자! [구현 방법] 1. image를 가져오는 함수를 2가지를 만들어서 가져오는 방법. func fetchImage() async { do { guard let url = URL(string: "https://picsum.photos/200") else {return} let (data, _ ) = try await URLSession.shared.data(from: url, delegate: nil) self.image = UIImage(data: data) } catch { print(error.localizedDescription) } } func fet..
2022.09.29 -
[학습 목표] 저번 시간에 main thread 와 global thread를 동시에 사용할시에 main thread가 global thread 안에 제대로 가지 않거나 global thread가 main thread 안에 제대로 들어가지 않는것을 볼 수가 있었다. 이러한 thread의 정보를 한 곳으로 입력받고 출력하는 방법에 대해 알아보자. [구현 방법] class DataManagerClass { @Published var dataArray = [String]() static let shared = DataManagerClass() private init() { getData() } func getData() { DispatchQueue.main.asyncAfter(deadline: .now() +..
[SwiftUI] subscribe / receive 에 관해서[학습 목표] 저번 시간에 main thread 와 global thread를 동시에 사용할시에 main thread가 global thread 안에 제대로 가지 않거나 global thread가 main thread 안에 제대로 들어가지 않는것을 볼 수가 있었다. 이러한 thread의 정보를 한 곳으로 입력받고 출력하는 방법에 대해 알아보자. [구현 방법] class DataManagerClass { @Published var dataArray = [String]() static let shared = DataManagerClass() private init() { getData() } func getData() { DispatchQueue.main.asyncAfter(deadline: .now() +..
2022.09.17 -
[참고 영상] https://youtu.be/-5kIzkBqAzc [학습 목표] Thread를 이용한 간단한 예제를 통해 async / await의 구현에 대해 알아보자. [구현 방법] func addTitle1(){ DispatchQueue.main.asyncAfter(deadline: .now()+2){ self.dataArray.append("Title1 : \(Thread.current)") } } 실행이 되면 deadline인 2초 뒤에 실행이 되는 함수. func addTitle2(){ DispatchQueue.global().asyncAfter(deadline: .now() + 2) { let title = "Title2 : \(Thread.current)" DispatchQueue.main..
[SwiftUI] async / await keywords in Swift[참고 영상] https://youtu.be/-5kIzkBqAzc [학습 목표] Thread를 이용한 간단한 예제를 통해 async / await의 구현에 대해 알아보자. [구현 방법] func addTitle1(){ DispatchQueue.main.asyncAfter(deadline: .now()+2){ self.dataArray.append("Title1 : \(Thread.current)") } } 실행이 되면 deadline인 2초 뒤에 실행이 되는 함수. func addTitle2(){ DispatchQueue.global().asyncAfter(deadline: .now() + 2) { let title = "Title2 : \(Thread.current)" DispatchQueue.main..
2022.09.17