Link는 URL 주소로 연결되는 컨트롤러입니다.
대상 URL과 제목을 제공하여 링크를 만들 수 있습니다. 제목은 사용자에게 링크의 목적을 알려주며, string, localized string을 생성하는 제목 키 또는 레이블 역할을 하는 보기일 수 있습니다. 다음 에시로 example.com 과 string 타입의 제목을 만든 Link입니다.
Link("View Our Terms of Service",
destination: URL(string: "https://www.example.com/TOS.html")!)
사용자가 링크를 탭하거나 클릭할 때, 기본 동작은 URL의 내용에 따라 다릅니다. 예를 들어, SwiftUI는 가능한 경우 관련 앱에서 유니버설 링크를 열거나, 그렇지 않은 경우 사용자의 기본 웹 브라우저에서 유니버설 링크를 엽니다. 또는, 사용자 지정 OpenURLAction으로 openURL .environment 값을 설정하여 기본 동작을 재정의할 수 있습니다.
Link("Visit Our Site", destination: URL(string: "https://www.example.com")!)
.environment(\.openURL, OpenURLAction { url in
print("Open \(url)")
return .handled
})
다른 보기와 마찬가지로, 링크 label의 보기 유형에 따라 표준 보기 수정자를 사용하여 링크 스타일을 지정할 수 있습니다. 예를 들어, 텍스트 라벨은 사용자 지정 글꼴(_:) 또는 foregroundColor(_:)로 수정하여 앱 UI에서 링크의 모양을 사용자 정의할 수 있습니다.
다른 예시
@Environment(\.openURL)을 사용하여 URL을 열 수 있도록 합니다. 이후 URLComponents 에서 검색하고자 하는 URL를 설정하고 해당 component의 scheme를 "https"로 지정합니다. 다음으로 scheme가 추가된 url를 사용한 전체 URL인 components.string 을 addingPercentEncoding(withAllowedCharacters:) 를 사용하여 영어가 아닌 문자들을 US-ASCII로 다시 표현합니다.
struct ContentView: View {
@Environment(\.openURL) var openURL
@State private var searchURL = ""
var body: some View {
VStack {
TextField("Insert URL", text: $searchURL)
.textFieldStyle(.roundedBorder)
.autocapitalization(.none)
.autocorrectionDisabled(true)
Button("Open Web") {
if !searchURL.isEmpty {
var components = URLComponents(string: searchURL)
components?.scheme = "https"
if let newURL = components?.string {
if let url = newURL.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
openURL(URL(string: url)!)
}
}
}
}.buttonStyle(.borderedProminent)
Spacer()
}.padding()
}
}
'SwiftUI' 카테고리의 다른 글
MPNowPlayingInfoCenter (잠금화면 미디어정보) (0) | 2024.03.03 |
---|---|
SafariView 사파리뷰 (0) | 2024.01.19 |
addingPercentEncoding - 특수 기호 URL에 포함시키기 (0) | 2024.01.17 |
AppDelegate (UIWindowSceneDelegate, UIApplicationDelegate) (0) | 2024.01.16 |
User Notification 알림 표시하기 (0) | 2024.01.16 |