问题标签 [photokit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1576 浏览

ios - PHFetchOptions 排序描述符不适用于 [PHAssetCollection fetchAssetCollectionsWithType:..]

尝试按字母顺序获取智能相册列表。我尝试排序localizedTitletitle但它们产生相同的结果。

日志显示结果未按排序顺序返回:

我究竟做错了什么?

0 投票
2 回答
960 浏览

ios - 在照片访问请求回调中显示视图控制器会引发异常

我正在使用以下代码在我的应用程序启动时请求访问用户照片库。

我不明白的是,当我打电话时

它抛出

如果我将调用移出回调,它可以正常工作。

Apple 文档没有说明它是在后台线程上运行的,尽管我认为这就是回调的全部意义所在。

此方法总是立即返回。如果用户先前已授予或拒绝照片库访问权限,则在调用时执行处理程序块;否则,它会显示警报并仅在用户响应警报后才执行该块。

我是否必须将导航编组回 UI 线程?

0 投票
1 回答
1580 浏览

ios - PHChange changeDetailsForFetchResult - 总是返回 nil

我正在使用PHPhotoLibrary检索几个这样的照片集:


该方法analyzeCollectionInternal保存PHAssetCollections供以后使用并显示集合的内容。


此外,我向照片库注册了一个更改观察者,如下所示:


充当观察者的类实现了PHPhotoLibraryChangeObserver这样的协议:


现在,如果我打开照片应用程序以从“所有照片”-SmartAlbum 添加/更改/删除照片,则会调用更改观察者,但调用

仅返回nil,即使 PHChange 对象包含insertedObjectIDsand changedObjectIDs。使用 iDevice 的 Home- 和 Lock-Button 截屏时也是如此。

0 投票
1 回答
265 浏览

ios - 如何直接链接到 iPhone 设备上的照片?

我正在尝试从我的应用程序修改 iOS 设备上的照片。但是苹果或其他人描述的所有方法都没有让我明白。

例如,我尝试使用 ImageIO 和 PhotosKit 来处理原始图像数据。要将其写入文件,我创建 CGImageDestination 并使用 CGImageDestinationFinalize 写入它,但这仅适用于模拟器(直接更改图像文件)。在设备上最后一个功能成功完成,但在照片文件中它什么也没写。

一段时间后,我可以猜到,当应用程序在设备上启动时,我从 PHAsset 获得的那个 URL,而不是直接链接到文件。但我不知道如何以其他方式获取 url。你能帮助我吗?

PS对不起我的英语:)

0 投票
1 回答
1194 浏览

ios - UICollectionView - 尝试删除并重新加载相同的索引路径

这是PHPhotoLibraryObserver

删除其他应用中的照片后出现错误

这是一个错误:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“尝试删除并重新加载相同的索引路径({length = 2, path = 0 - 0})”

当我排序PHFetchResult如下。崩溃如上

当我将排序选项设置为零时。顺利

我不确定有什么问题。。

0 投票
0 回答
97 浏览

ios - 来自 iCloud 的全尺寸 PNG 数据

我正在尝试获取资产的全尺寸图像数据,尤其是当照片在 iCloud 中时。我想要最新版本的图像。

如果图像是 JPG 则一切正常,但如果它是 PNG(例如屏幕截图)并且在 iCloud 上,我不会收到任何数据,也不会出现错误。如果 PNG 在设备上,我将获得全尺寸图像。要从 iCloud 照片接收 PNG 图像,我需要请求原始版本 ( PHImageRequestOptionsVersionOriginal),但我不想要 JPG 的原始版本。

有没有办法从 iCloud 请求 JPG 和 PNG 的最新版本?还是我做错了什么?

这是我请求图像的代码:

0 投票
2 回答
1731 浏览

ios - PHAssetChangeRequest 完成后 PHAsset 不反映更改

在文档中它说:

在 Photos 运行更改块并调用您的完成处理程序后,资产的状态会反映您在块中请求的更改。

但是,在完成处理程序内部(以及完成处理程序之后),我的 PHAsset 没有改变。这是我用来更改收藏状态的代码,它是从 PHAsset 文档页面中提取的。

上面的-dispatchAfter:-dispatchMain:函数只是调用gcd函数以在一定时间后异步执行块或在主 UI 线程上执行块的便利函数。

当我运行代码时,我看到它开始 1) 资产不是最喜欢的,然后 2) 请求是最喜欢的,3) 资产仍然不是最喜欢的,4) 资产仍然不是最喜欢的,5) 资产仍然不是最喜欢的。

我究竟做错了什么?为什么我的资产对象没有更新?

0 投票
1 回答
1177 浏览

ios - CGImageDestinationFinalize 崩溃

我的应用程序允许用户使用照片框架编辑照片。我看到一些崩溃报告,生成输出图像时似乎发生了崩溃,但我不确定问题出在哪里。此崩溃发生在多个硬件设备和多个版本的 iOS 9 上,包括最新的 9.1。我的应用程序发出的最后一次调用是CGImageDestinationFinalize为了创建已编辑的图像NSData。崩溃报告显示,在看起来像是 GLTextureManager 的崩溃发生之前,CoreImage 空间中的调用会继续。

这可能是内存不足的问题吗?你看到问题了吗?如何解决?

相关代码来自PhotoEditor.swift, 内部调用fullImageOutput的函数editSingleAsset在后台队列上运行QOS_CLASS_UTILITY

崩溃报告的可视化:

在此处输入图像描述

崩溃报告详细信息:

0 投票
1 回答
150 浏览

nspredicate - 在照片框架中使用 NSPredicate 时出现异常:定义 -[NSFunctionExpression constantValue]!

以下代码在调用 fetchAssetsWithOptions 时引发 NSInvalidArgumentException:

消息是

我尝试了谓词格式字符串的多种变体,但当我尝试使用乘法时,总是会收到此消息。我究竟做错了什么?

0 投票
0 回答
629 浏览

ios - 为什么在 iOS 模拟器中对照片所做的更改不会持续存在?

我最近一直在使用 Apple 的照片框架,当我注意到对 PHAssets 所做的任何更改实际上并没有持续存在时——照片库有点“故障”,并且在我的应用程序的缩略图视图中留下了空白的灰色空间.

打开照片应用程序后,视图会“重置”缩略图,但会显示原始照片,而不是我在应用程序中所做的修改。此外,进入照片应用程序中的本机“编辑”模式显示这些修改已被确认,因为有一个红色的“恢复”按钮可用。点击它什么也没做(因为显示的照片已经是原始照片)。

我决定对此进行进一步调查。即使在本机照片应用程序中,任何过滤器或更改(例如拉直、裁剪等)最终都不会反映在照片应用程序中。进行了更改,然后当点击“完成”时,图像会自行恢复为原始图像。更改不会保留!

但是,在设备上测试我的应用程序后,该应用程序运行良好!更改立即反映,不会出现“故障”!很奇怪!

我试过重置模拟器,并重新安装 Xcode(我的版本是 7.2)。值得注意的是,我还尝试过不同的模拟器(iOS 9.1 和 9.2)。关于为什么会发生这种情况的任何想法?是别人体验过的吗?请分享!

谢谢阅读!


更新 1 在本机照片应用程序中进行更改后,点击“完成”会产生以下错误消息:“保存此照片时出错。请稍后再试。”