📝
SwiftUIでQuick Look
SwiftUIではQuickLookをインポートすることでQLPreviewController
を使わずにファイルのURLを伝えるだけでQuick Lookを実装できます
import QuickLook
struct QuickLookSample: View {
@State var url: URL? = //URL または nil
var body: some View {
// View
.quickLookPreview($url)
}
}
複数ファイル
quickLookPreview
では前述のような単一ファイルの表示のほかに、セットの中から最初に表示するファイルを選びユーザが簡単にファイル間を移動する実装もできます
let slides: [URL] = [/* ファイルのURL */]
@State var selected: URL? = nil
var body: some View {
List {
ForEach(0..<5) { i in
Button {
if showAllSlides {
selectedIn = slides[i]
} else {
selected = slides[i]
}
} label: {
Text(verbatim: "スライド\(i + 1)")
}
}
}
.quickLookPreview($selectedIn, in: slides)
}
macOSではFinderと同様にウィンドウの上にウィンドウで表示されます
iPadOSでステージマネージャー利用時は、ファイルアプリの挙動と異なりメインウィンドウ内でモーダル表示されます
サンプル
サンプルプロジェクトを作成しました
単一と複数ファイル両方扱っています
参考
Discussion