标签: phpicker

如何修改PHPicker的外观

我在 iOS 14 上使用新的 PHPicker 时遇到问题。当我的应用程序请求照片库授权时,系统将提示用户三个选项,如果用户选择“选择照片”,系统将呈现一个 PHPicker,其中用户可以选择我的应用程序可以访问的照片和视频。

但现在PHPicker系统的导航栏看起来太糟糕了,它有黑色的背景和黑色的文本颜色(见下面的链接)。我想知道如何定制它的外观。

非常感谢任何回复!

PHPicker

uikit ios14 phpickerviewcontroller phpicker

7
推荐指数
1
解决办法
1085
查看次数

LazyVGrid、List、LazyStacks 不从内存中释放视图?

我正在 SwiftUI 2 中使用新的照片选择器,我制作了一个简单的应用程序来在 LazyVGrid 中显示导入的图像,但是当向下滚动时,如果我导入了大约 150 张图像,该应用程序会完成所有内存并崩溃(由于内存问题)。

我对 LazyVStack 和 List 进行了同样的尝试,但它们有同样的问题,我期待惰性项从内存中释放所有脱离屏幕的单元格,但它看起来似乎不起作用。

这是一个错误还是我做错了什么?

这是我的代码:

import SwiftUI

struct Media: Identifiable {
    var id = UUID()
    var image: Image
}

struct ContentView: View {
    @State var itemProviders: [NSItemProvider] = []

    @State private var showingPhotoPicker: Bool = false
    
    let columns = [
        GridItem(.adaptive(minimum: 100, maximum: 100), spacing: 8)
    ]
    
    @State var medias: [Media] = []
    
    var body: some View {
        NavigationView {
            ScrollView {
                LazyVGrid(columns: columns, spacing: 8) {
                    ForEach(medias) { media …
Run Code Online (Sandbox Code Playgroud)

swift swiftui phpicker lazyvgrid

6
推荐指数
0
解决办法
507
查看次数

如何使用 PHPickerViewController 仅显示有限的照片?

我使用有限照片库功能并选择了一些照片,但是当使用PHPickerViewController在应用程序中选择图像时,PHPickerViewController 会显示图库中的所有图像,而不是之前仅显示一些选定的图像。

是否可以在 PHPickerViewController 中只显示预先选择的图像?如果没有,如何显示预先选择的图像列表,以便用户可以选择之前的 UIImagePickerController。

感谢大家的分享和评论

ios swift ios14 phpickerviewcontroller phpicker

6
推荐指数
1
解决办法
829
查看次数

如何从 PHPicker 检索 PHAsset?

WWDC20 中,苹果引入了PHPicker - UIImagePickerController 的现代替代品。
我想知道是否可以使用新的照片选择器检索 PHAsset?


这是我的代码

 private func presentPicker(filter: PHPickerFilter) {
        var configuration = PHPickerConfiguration()
        configuration.filter = filter
        configuration.selectionLimit = 0
        
        let picker = PHPickerViewController(configuration: configuration)
        picker.delegate = self
        present(picker, animated: true)
    }


func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
        dismiss(animated: true)
        
        
    }
Run Code Online (Sandbox Code Playgroud)

ios swift phasset phpickerviewcontroller phpicker

5
推荐指数
1
解决办法
5227
查看次数

iOS 14 NSItemProvider loadDataRepresentation() 返回指定类型的 nil 数据

设置:

\n

我用来PHPickerViewController允许用户选择照片。我已经实现了PHPickerViewControllerDelegate协议方法picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult])itemProvider我从结果数组中获取。

\n

问题:

\n

我需要访问所选图像的数据。NSItemProviderCalled上有一个方法loadDataRepresentation(),它接受类型标识符字符串,并应在其完成块中返回图像数据。

\n

当我调用这个方法时,有时它会返回数据,有时则不会。我已经对每个提供程序的多个注册类型标识符进行了尝试,并且看到了同样的情况。有时它会返回 JPEG 数据,但不返回 HEIF,有时仅返回 HEIF,有时根本不返回任何数据。这是一致的,因为每次我尝试加载其数据时,同一张照片都会显示相同的结果。

\n

当没有数据时,我看到以下错误:

\n
Upload preparation for claim D8C281B7-CCCE-4299-95BF-9355FCF340E4 completed with error: Error Domain=NSCocoaErrorDomain Code=260 "The file \xe2\x80\x9c7AB1AB3F-7643-45C1-9DD9-5F5642965C3A.jpeg\xe2\x80\x9d couldn\xe2\x80\x99t be opened because there is no such file."\n
Run Code Online (Sandbox Code Playgroud)\n

在尝试加载照片数据之前,我需要对照片执行某些操作吗?也许我在这里错过了一步?我直接用 iPhone XR 拍摄的照片会出现这种情况。我没有使用 iCloud 照片,所有照片都在设备上。

\n

ios ios14 phpickerviewcontroller phpicker

5
推荐指数
1
解决办法
2686
查看次数

Swift:如何处理 PHPicker 的视频和照片结果?

我需要用户能够从照片库中选择多张照片和视频。(使用 PHPicker)我已经知道如何用这个获取图像:

func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
    var contentsData: [Data] = []
    for result in results {
        if result.itemProvider.canLoadObject(ofClass: UIImage.self) {
            result.itemProvider.loadObject(ofClass: UIImage.self) { selectedData, error in
                if let error = error {
                    print("PICKER ERROR: \(error)")
                } else {
                    if let selectedImage = selectedData as? UIImage {
                        if let selectedImageData = selectedImage.jpegData(compressionQuality: 0.5) {
                            contentsData.append(selectedImageData)
                            if contentsData.count == results.count {
                                self.parent.completion(contentsData)
                            }
                        }
                    }
                }
            }
        }
    }
    self.parent.presentationMode.wrappedValue.dismiss()
}
Run Code Online (Sandbox Code Playgroud)

我假设我需要做的是检查 PHPickerResult 的每个结果是什么数据类型,然后相应地加载每个对象。问题是视频文件可能是 .mov、.mp4 等。如何将 PHPickerResult 识别为视频并进行相应处理?

swift phpicker

4
推荐指数
1
解决办法
5102
查看次数

如何使用 PHPicker 从图库中获取 WebP 图像

我有一个 PHPIckerViewController,自 iOS 14 起可用。我想从画廊获取 WEBP 格式的图像。但是 PHPicker 中的项目提供程序无法加载这种格式的图像。请告诉我如何使用新的选择器在 UIButton 上选择和设置图像。

代码:

extension SixStepRegistrationViewController: PHPickerViewControllerDelegate {
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
 
        
        let supportedRepresentations = [UTType.rawImage.identifier,
                                        UTType.tiff.identifier,
                                        UTType.bmp.identifier,
                                        UTType.png.identifier,
                                        UTType.jpeg.identifier,
                                        UTType.webP.identifier,
        ]
        for representation in supportedRepresentations {
            if results[0].itemProvider.hasRepresentationConforming(toTypeIdentifier: representation, fileOptions: .init()) {
                print(representation, " repr")
                
                    results[0].itemProvider.loadInPlaceFileRepresentation(forTypeIdentifier: representation) { (originalUrl, inPlace, error) in
                        
                            DispatchQueue.main.async {
                                print(originalUrl, "  ", inPlace)

                                self.addPhotoButton.setImage(UIImage(contentsOfFile: originalUrl!.path), for: .normal)
                            //self.dismiss(animated: true, completion: nil)
                        }
                    }
                }
       }
        
Run Code Online (Sandbox Code Playgroud)

}

谢谢

xcode ios swift phpickerviewcontroller phpicker

3
推荐指数
1
解决办法
1647
查看次数

iOS 14:PHPickerViewController 有没有办法同时加载所有资源 PHPickerResult

目前,我正在尝试深入研究 PHPickerViewController 以从照片中同时选择多个图像。所以我想要用户选择的图像数组,我尝试了太多方法但没有运气。这是我的代码,请告诉我有最佳实践吗?

func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
        picker.dismiss(animated: true, completion: nil)
        var images: [UIImage?] = []
        var totalConversionsCompleted = 0
        for (index,result) in results.enumerated() {
            result.itemProvider.loadObject(ofClass: UIImage.self, completionHandler: { (object, error) in
                let image = object as? UIImage
                images.append(image)
                totalConversionsCompleted += 1
                if totalConversionsCompleted == index {
                    print("completion happen \(images)")
                }
            })
        }
    }
Run Code Online (Sandbox Code Playgroud)

ios swift phpickerviewcontroller phpicker photosui

2
推荐指数
1
解决办法
5955
查看次数

如何在 iOS 中以编程方式使用新的 PHPicker 从照片加载图像?

我想使用 new 从照片中选择图像,PHPickerViewController并且想PHPicker在加载控制器时直接打开。


像这样

像这样

import UIKit
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
         // Do any additional setup after loading the view.
         // TODO: - Here I want PhotoPicker
       }
    }
Run Code Online (Sandbox Code Playgroud)

xcode ios swift phpicker

-2
推荐指数
1
解决办法
6609
查看次数