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이며, 이는 뷰가 항상 대상 개체로 간주됨을 의미합니다.





