SwiftUI中如何配置PhotosPicker以同时选择图片或视频?
解决PhotosPicker同时选择图片和视频的问题
你不能直接用数组[.images, .videos]传递给matching参数,因为该参数要求的是PHPickerFilter?类型,而非数组。要实现同时支持图片和视频选择,需使用PHPickerFilter的.any(of:)方法组合多个过滤器。
修改后的代码如下:
PhotosPicker( selection: $selectedItem, matching: .any(of: [.images, .videos]), photoLibrary: .shared()) { Text("Select a photo or video") } .onChange(of: selectedItem) { newItem in Task { if let data = try? await newItem?.loadTransferable(type: Data.self) { selectedImageData = data } } }
说明:
.any(of:)方法接收一个PHPickerFilter数组,只要资源匹配数组中任意一个过滤器,就会被允许选择,以此实现同时支持图片和视频的需求。- 你之前的数组写法会被Swift推断为
[Any]类型,与PHPickerFilter?类型不兼容,因此出现了类型转换错误。
内容的提问来源于stack exchange,提问作者Coddo
相关产品推荐
相关产品推荐

