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()
   }
}

 

 

 

 

 

ytw_developer