blog

파일 드래그 앤 드롭의 SwiftUI 구현

SwiftUI에서는 onDrop 수정자를 사용하여 파일 끌어서 놓기를 활성화할 수 있습니다. 끌어서 놓는 파일의 URL을 저장하는 fileURL 상태 변수 정의 onDrop 수정자...

Oct 22, 2025 · 3 min. read
シェア

SwiftUI에서는 onDrop 수정자를 사용하여 파일 드래그 앤 드롭 기능을 구현할 수 있습니다.

끌어서 놓는 파일의 URL을 저장하는 fileURL 상태 변수를 정의합니다.

onDrop 수정자를 사용하여 뷰에 끌어서 놓기 핸들러를 추가했습니다. 허용되는 파일 형식은 public.file-url로 지정되고 클로저가 끌어서 놓기 파일을 처리하는 데 사용됩니다. 클로저에서는 먼저 파일이 공급자에 있는지 확인한 다음 첫 번째 파일을 로드하고 URL 객체로 변환합니다. 마지막으로 DispatchQueue.main.async 사용하여 상태 변수 fileURL을 새 URL 객체로 업데이트합니다.

import SwiftUI
struct DragAndDropView: View {
 @State var fileURL: URL? = nil
 
 var body: some View {
 VStack {
 if let fileURL = fileURL {
 Text("파일이 선택되었습니다:\(fileURL.lastPathComponent)")
 } else {
 Text("이 영역으로 파일을 끌어다 놓습니다.")
 }
 }
 .frame(width: 300, height: 300)
 .onDrop(of: ["public.file-url"], isTargeted: nil) { providers -> Bool in
 guard let item = providers.first else { return false }
 item.loadItem(forTypeIdentifier: "public.file-url", options: nil) { (data, error) in
 guard let urlData = data as? Data,
 let fileURL = URL(dataRepresentation: urlData, relativeTo: nil) else { return }
 DispatchQueue.main.async {
 self.fileURL = fileURL
 }
 }
 return true
 }
 }
}

SwiftUI 창 크기 설정 방법

import SwiftUI
@main
struct WindowSizeApp: App {
 var body: some Scene {
 WindowGroup {
 ContentView()
 .frame(minWidth: 500, minHeight: 300) // 최소 너비 및 높이 설정
 .frame(maxWidth: .infinity, maxHeight: .infinity) // 최대 너비 및 높이 설정
 }
 }
}

지원 유형은 무엇인가요?

SwiftUI에서는 onDrop 수정자의 of 매개변수를 사용하여 지원되는 파일 유형을 지정할 수 있습니다. 다음은 몇 가지 일반적인 파일 유형과 해당 UTI입니다:

  • 이미지 파일:

    • public.image: 일반 이미지 유형으로, JPEG, PNG, GIF 및 기타 형식을 지원합니다.
    • public.png: PNG 이미지 형식입니다.
    • public.jpeg: JPEG 이미지 형식입니다.
    • public.gif: GIF 이미지 형식입니다.
    • public.tiff: TIFF 이미지 형식입니다.
    • public.heic: HEIC 이미지 형식입니다.
  • 텍스트 파일:

    • public.plain-text: 일반 텍스트 파일입니다.
    • public.comma-separated-values-text: 쉼표로 구분된 값 파일.
    • public.tab-separated-values-text: 탭으로 구분된 값 파일입니다.
    • public.rtf: 서식 있는 텍스트 형식 파일입니다.
  • PDF

    • com.adobe.pdf: Adobe PDF
  • 오디오 파일:

    • public.audio: 일반 오디오 유형입니다.
    • public.mp3: MP3 오디오 형식입니다.
    • public.mpeg-4-audio: MPEG-4 오디오 형식입니다.
    • public.wav: WAV 오디오 형식입니다.
  • 비디오 파일:

    • public.movie: 일반 동영상 유형입니다.
    • public.mp4: MP4 동영상 형식입니다.
    • public.mpeg: MPEG 동영상 형식입니다.

위 예제 코드에서 fileURL은 사용자가 드래그 앤 드롭한 파일을 저장하는 데 사용되는 URL로, 컴퓨터에서 파일의 위치를 나타내는 URL입니다.

URL은 로컬 파일 시스템의 파일, 네트워크의 리소스 또는 기타 지원되는 리소스 등 리소스의 위치를 식별하는 방법입니다. 이 예에서 fileURL은 사용자가 끌어서 놓는 이미지 파일의 위치를 저장하는 데 사용됩니다.

URL 유형을 사용하면 파일의 경로, 이름 및 기타 속성에 쉽게 액세스하여 이미지 로드, 텍스트 콘텐츠 읽기 등과 같은 파일 작업을 수행할 수 있습니다.

두 번째 매개 변수는 타겟팅

onDrop 수정자의 isTargeted 매개변수는 끌어서 놓기 작업에 대상 개체가 있는지 여부를 지정하는 선택적 매개변수입니다. 사용자가 파일을 끌면 마우스 위치가 끌어서 놓기를 받는 뷰 내에 있는 경우 대상 개체 표시기가 표시됩니다. 이 매개 변수에 따라 뷰가 대상 개체로 간주되는지 여부가 결정됩니다.

isTargeted 매개변수에는 세 가지 가능한 값이 있습니다:

  • nil로 설정하면 뷰가 항상 대상 개체로 간주됩니다. 즉, 마우스 위치에 관계없이 대상 개체 표시기가 표시됩니다.
  • true로 설정하면 마우스가 뷰의 특정 영역 내에 있을 때만 대상 개체 표시기가 표시됩니다. 이 경우 뷰에서 지오메트리리더를 사용하여 대상 영역을 정의해야 합니다.
  • false로 설정하면 마우스가 뷰 내부에 있더라도 뷰가 대상 개체로 간주되지 않습니다. 즉, 대상 개체 표시기가 표시되지 않습니다.

기본적으로 isTargeted 매개 변수는 nil이며, 이는 뷰가 항상 대상 개체로 간주됨을 의미합니다.

Read next

빅데이터 처리에서 인공 면역 알고리즘의 효율적인 솔루션

1.배경 데이터의 대량 생성 및 저장으로 인해 빅데이터 처리 기술은 오늘날 사회에서 없어서는 안 될 중요한 부분이 되었습니다. 빅데이터 처리에는 금융, 의료, 교육, 물류, 전자상거래 등 다양한 분야가 포함되지만 이에 국한되지 않습니다. 인공지능 기술이 지속적으로 발전함에 따라 인공지능은

Oct 22, 2025 · 1 min read