UIImagePickerController 第一次打开速度很慢,除了双击时

问题描述 投票:0回答:4

我在 iOS 9 上使用 swift 遇到了这种非常奇怪的行为,其中我有一个

tableViewCell
,当点击拍摄某物的照片时会打开
imagePicker
,当你第一次点击单元格时,它需要大约 10秒打开选择器,但是当您点击它两次时,它会立即打开...

选择器的初始化代码如下

let certificateImagePicker = UIImagePickerController()
certificateImagePicker.delegate = self
certificateImagePicker.allowsEditing = false
certificateImagePicker.sourceType = .Camera
certificateImagePicker.modalPresentationStyle = .CurrentContext

呈现选择器的代码是

presentViewController(certificateImagePicker, animated: false, completion: nil)

我现在不知道它是否相关,但打开选择器后它显示此错误消息

对尚未渲染的视图进行快照会导致空快照。 确保您的视图在拍摄快照之前至少已渲染一次或 屏幕更新后的快照。

ios swift uiimagepickercontroller
4个回答
8
投票

我在第一次尝试时也遇到了类似的延迟。对我来说有很大帮助的是在初始化父级的同时初始化它

UIImagePickerController
,就像这样:

UIViewController



6
投票


0
投票
当我有了这个实现时,它在尝试第一个礼物时等待,然后将我的变量更改为
private var imagePickerController = UIImagePickerController() ... @objc func addPhoto() { imagePickerController.delegate = self imagePickerController.sourceType = .savedPhotosAlbum present(imagePickerController, animated: true) } ...

,然后它就像魅力一样工作。

lazy variable



0
投票

只需在 ViewDidLoad 期间显示并关闭图像选择器,这将强制控制器自行加载:

private lazy var imagePickerController = UIImagePickerController()

请注意,这可能会稍微影响总体加载时间,但这绝对比让用户等待要好。

© www.soinside.com 2019 - 2024. All rights reserved.