if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
let imagePicker = UIImagePickerController()
imagePicker.sourceType = .photoLibrary
imagePicker.allowsEditing = true
self.present(imagePicker, animated: true, completion: { })
}
即使使用上述代码将“设置”中的“照片”访问权限设置为“从不”,我仍然可以显示图像选择器并显示照片。我会PHPhotoLibrary.authorizationStatus()
在显示之前进行检查,但我想知道这是预期的行为吗?
好的,您可以将答案和评论中的一部分拼凑起来,但要尝试讲出更完整的故事…
在iOS 11中,UIImagePickerController
与应用程序分开运行。这意味着:
您可以在PhotoKit的WWDC17演讲中看到有关此内容的更多信息。
(顺便说一下,此模型与您自iOS
9以来在Contacts框架中看到的模型匹配;如果显示联系人选择器,则您的应用只会获得用户选择的联系人的一次性联系信息,而不会对联系人数据库的持续读写访问权限,因此联系人选择器不需要特殊的隐私权限。)
PHPhotoLibrary
其授权状态反映了用户可以从“设置”>“隐私”中控制的“照片”访问权限的全局读/写权限。(这就是您的Info.plist所需要的NSPhotoLibraryUsageDescription
。)对该PHPhotoLibrary
API的任何使用都需要此权限,无论您的应用对该API的使用是仅用于写入还是仅用于读取。自从iOS
8中引入PhotoKit以来,这就是事实。
如果您未使用PHPhotoLibrary
,PHAsset
等,则iOS 11中新增了一些较窄的权限选项(并且不属于Photos.framework
API):
UIImagePickerController
不需要全面的“隐私设置”权限,因为每次使用都会授予对所选特定资产的一次性读取访问权限。UIImageWriteToSavedPhotosAlbum
或UISaveVideoAtPathToSavedPhotosAlbum
。使用这些内容,您可以将它们放入NSPhotoLibraryAddUsageDescription
Info.plist中-然后,系统的“隐私设置”将向用户表明,他们不授予您查看或修改现有资产的权限,而只是添加新资产。如果用户授予仅添加权限,则该权限仅适用于那些UIKit函数-
尝试使用PHPhotoLibrary
仍将提示(并要求使用Info.plist键)读/写访问权限。
有关仅添加隐私设置的更多信息,请参见WWDC17讨论的这一部分。
问题内容: 我知道可以偏斜,但我看不到以特定角度偏斜每个角的方法。 这是我正在从事的项目: 专门查看菜单中的标签。现在,我正在使用图像,我想针对功能强大的浏览器进行更改。 我知道可以创建CSS trapazoid,但是使用没有内容的边框。最终结果还需要一些圆角。 问题答案: 这可能是一个大概的想法:
问题内容: 我正在尝试对Spring 3.1 的注释支持,并且想知道是否有任何方法可以通过设置TTL在一段时间后清除缓存的数据?现在,从我看到的内容中,我需要使用和自己清除它,并与我一起使用可以实现TTL实现,但是对于这样一个简单的任务来说似乎有点多了吗? 问题答案: 如何设置TTL / TTI /驱逐策略/ XXX功能? 直接通过你的缓存提供程序。缓存抽象是…好吧,抽象不是缓存实现 因此,如果你
我已经安装了我的jdk文件。我还在用户变量和系统变量的高级设置中设置了我的路径。当我试图通过javac编译我的程序时filename.java命令提示符显示javac不被识别为内部或外部命令。我再次设定了我的道路,但问题仍然是一样的
我安装了Java JDK,然后在高级设置中设置了系统环境的路径,但在命令提示符中仍然无法识别。。 这是截图
问题内容: 我正在使用创建时间选择器。内的文字是可编辑的。但我想将设置为不可编辑,因为有机会给出无效的值。谁能帮我? 问题答案: 请尝试以下操作: 只要您自己没有通过调用更改微调器编辑器,此方法就应该起作用。 告诉我们这是否有帮助。
我很好奇是否可以将iOS设置(例如位置/图片)重置为默认设置,这样用户每次都会被问到是否允许位置或相机使用。 目前,我正在尝试用Ionic/Cordova做这件事。 也许你们中有人知道怎么做,或者能告诉我这是不是可能的。