⭐️TextSelection / Window, Scene⭐️
텍스트를 꾹 누르면 복사 할 수 있고, 공유도 할 수 있는 textselection에 대해 알아보자.
// Created by Toughie on 2023/05/11.
//
import SwiftUI
struct TextSelectionPrac: View {
var body: some View {
Text("Hello, Toughie!")
.textSelection(.enabled)
}
}
단순한 모디파이어 하나로 액티비티뷰까지 띄울 수 있다니.. 파격적이다...
+ 텍스트를 탭했을 때 액티비티뷰를 띄울 수 있는 코드
// Created by Toughie on 2023/05/12.
//
import SwiftUI
struct ActivityViewMini: View {
let textToShare = "Hello, world!"
var body: some View {
Text("\(textToShare)")
.padding()
.onTapGesture {
guard let windowScene = UIApplication.shared.connectedScenes.first(
where: { $0.activationState == .foregroundActive }) as? UIWindowScene,
let window = windowScene.windows.first(where: { $0.isKeyWindow })
else { return }
let vc = UIActivityViewController(activityItems: [textToShare], applicationActivities: [])
window.rootViewController?.present(vc, animated: true, completion: nil)
}
}
}
윈도우와 씬
씬(Scene)은 iOS 앱에서 실행되는 화면을 나타낸다.
예를 들어, 메인 화면, 설정 화면, 상세 정보 화면 등 각각의 화면은 하나의 씬으로 처리된다.
한편, 윈도우(Window)는 ‘씬이 표시되는 영역’을 의미한다.
즉, 윈도우는 씬의 내용을 화면에 출력하는 역할을 한다. 일반적으로 윈도우와 씬은 1:1 대응되는 관계이다.
하지만 iOS 13부터는 멀티태스킹을 지원하면서 씬과 윈도우의 관계가 복잡해졌다.
예를 들어, 하나의 앱에서 두 개 이상의 씬을 동시에 화면에 표시할 수 있다.
이때 ‘각 씬은 각자의 윈도우를 가지고’, 각각 다른 화면 영역에 표시된다.
윈도우는 씬이나 뷰 컨트롤러를 포함하는 컨테이너이며, 화면에 콘텐츠를 표시하는 역할을 한다.
즉, 윈도우는 앱이 화면에 보여지는 영역을 나타내며, 여러 개의 씬을 포함할 수 있다.
각 씬은 하나의 뷰 컨트롤러와 관련이 있으며, 윈도우는 이러한 뷰 컨트롤러가 표시될 수 있는 여러 씬을 포함할 수 있다.
윈도우 내부에 (윈도우, 씬) 쌍이 여러 개 들어갈 수 있게 되었다는 것.
ex, iPad에서 하나의 앱을 Split View로 나누어서 보고 있는 경우, 하나의 앱은 두 개의 씬을 가지게 된다.
각 씬은 서로 다른 윈도우에 들어가게 되며, 하나의 윈도우 안에 두 개의 (윈도우, 씬) 쌍이 들어가는 것이다.
'SwiftUI > SwiftUI(Basic)' 카테고리의 다른 글
[58] List Swipe Actions (0) | 2023.05.12 |
---|---|
[57] .buttonStyle / .controlSize / .buttonBorderShape (0) | 2023.05.12 |
[55] Background Materials (0) | 2023.05.11 |
[54] AsyncImage / @unknown (0) | 2023.05.11 |
[53] 온보딩뷰 만들기 (0) | 2023.05.08 |