在 UIDocumentPickerViewController 中显示自定义 UTI 的图标

2024-01-28

我正在开发的 iOS 应用程序导出 UTI。的相关部分Info.plist看起来像这样:

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.xml</string>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>GPX Document</string>
        <key>UTTypeIdentifier</key>
        <string>de.company.app.gpx</string>
        <key>UTTypeSize320IconFile</key>
        <string>Doc320.png</string>
        <key>UTTypeSize64IconFile</key>
        <string>Doc64.png</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>gpx</string>
            </array>
        </dict>
    </dict>
</array>

我希望应用程序通过“在...中打开”对话框处理 GPX 文件,因此同一 PLIST 中还有一个文档类型定义(引用 UTI):

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>Icon29.png</string>
            <string>Icon58.png</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>de.company.app.gpx</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>de.company.app.gpx</string>
        </array>
    </dict>
</array>

在 Safari 中打开 GPX 文件时,它会显示我在下面指定的图标CFBundleTypeIconFiles, i.e., Icon58.png在视网膜设备上。该应用程序还允许通过 iOS 8 中引入的 UIDocumentPickerViewController 类进行导入,虽然 UTI 定义可以很好地过滤 iCloud Drive 中的相关文件,但它不会显示我指定的任何艺术品:

我已确保所有引用的图像文件(Icon29.png, Icon58.png, Doc64.png, Doc320.png)确实位于应用程序包的根目录中。它们名称中的数字表示它们的高度(以像素为单位)。这Doc...文件是正方形,另外两个如下本规格 https://developer.apple.com/library/mac/documentation/general/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-SW9(仅限 iPhone)。

我基本上有两个问题:

1) 如何让 UIDocumentPickerViewController 显示 UTI 的自定义图标?

2)是否还有其他用例UTTypeSize64IconFile and UTTypeSize320IconFile被使用?


不幸的是,答案是除非您的应用程序可以控制这些文件写入磁盘的方式,否则无法完成此操作。在这种情况下,您可以子类化UIDocument并写出缩略图。Here https://devforums.apple.com/message/1043903#1043903是苹果工程师在苹果开发者论坛上发布的原始答案(需要登录)。它包含一个代码示例来说明它是如何完成的。

我还没有找到问题第二部分的答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 UIDocumentPickerViewController 中显示自定义 UTI 的图标 的相关文章

  • iOS 5 UIView drawRect 覆盖在设备上不起作用

    我正在准备在 iOS 5 GM 上发布我的 iPhone 应用程序 并遇到了 UIView 的错误 当我在子类上重写 drawRect 方法时 模拟器会显示所需的结果 但当我尝试在实际设备上测试时 drawRect 重写根本没有任何效果 我
  • iOS 无法获取人物图像

    我有两个 tableViewController 第一个有联系人列表 另一张显示详细的人员信息 第一个tableViewController的一段代码 ABAddressBookRef addressBook ABAddressBookCr
  • 在 iOS 7 中查看 Core Data 创建的 sqlite 文件时出现问题

    当我尝试访问由核心数据创建的数据库文件时遇到问题 DB 文件位于 Documents 文件夹中 我已将其复制到桌面并使用 Firefox 插件打开它 Hello sqlite文件不包含任何行我有使用核心数据插入值 我正在使用 iOS 7 模
  • UICollectionView 设置列数

    我刚刚开始学习 UICollectionViews 我想知道是否有人知道如何指定集合视图中的列数 默认设置为 3 iPhone 肖像 我查看了文档 似乎找不到简洁的答案 对于 Swift 5 和 iOS 12 3 您可以使用4 以下实现为了
  • supportedInterfaceOrientations 方法不会重写其超类中的任何方法

    在 UIViewController 中 这段代码 public override func supportedInterfaceOrientations gt UIInterfaceOrientationMask if let mainC
  • iOS FacebookSDK + 解析 SDK + GoogleMaps SDK

    我搜索了很多 然后我意识到 ObjC标记那个GoogleMapSDK需要 但不能很好地配合ParseSDK and FacebookSDK 所以我阅读了所有的 stackoverflow 答案并尝试解决我的问题 问题还没有解决 我执行的步骤
  • Xcode - 发布和分发配置中的 Malloc_Error

    仅当我在设备上选择发布或分发配置时 我才会收到此错误 在模拟器上它运行良好 请问 我错在哪里 cc1obj 4113 malloc mmap size 429379584 failed error code 12 error can t a
  • 如何将 NSMutableArray 添加到 NSMutableArray Objective-c

    我正在从 Java 切换到 Objective c 但遇到了一些困难 我已经搜索过这个问题但没有取得太大成功 我有一个存储 NSMutableArrays 的 NSMutableArray 如何向数组添加数组 您可以在数组中存储对另一个数组
  • 如何使用逗号和行分隔符对字符串进行标记

    我正在 Swift 中制作一个简单的 String Tokenizer 就像在 Java 中一样 但这对我来说确实不起作用 我的数据源中每行的末尾用 分隔 数据用逗号分隔 例如 字符串 1 字符串 2 字符串 3 字符串 1 字符串 2 字
  • iOS 上关键 ClientState 警告的默认访问速度缓慢

    在测试我的 iOS 应用程序时 我收到 对关键 ClientState 的默认访问速度慢 耗时 0 034635 秒 容差为 0 020000 警告 它似乎是间歇性发生的 我试图环顾四周看看它是关于什么的 但我并不完全确定 任何帮助表示赞赏
  • 从字典创建 Swift 对象

    如何根据 Swift 字典中的查找值动态实例化类型 希望这对其他人有用 我们需要进行一些研究才能弄清楚这一点 目标是避免巨大的 if 或 switch 语句从值创建每个对象类型的反模式 class NamedItem CustomStrin
  • iOS - 在相机上放置自定义叠加层(垂直对齐)。顶部黑条的大小

    我正在寻找以下问题的编程解决方案 我想在相机 iOS 上绘制自定义叠加层 我希望它位于相机输出视图的垂直中央 我已经完成了相对于屏幕而不是相机图片居中绘制自定义视图 为此 我需要获得顶部黑条的大小 我怎么才能得到它 顶部和底部栏的大小不相等
  • “无法取消归档名为 UITableViewController 的元素”

    我一直在按照 构建你的第二个 iOS 应用程序 教程一步步进行 在教程承诺所有错误都会消失之后 我遇到了这个错误 但直到其他错误都出现后 该错误才出现 全部更正 我尝试编译它 错误 The document MainStoryboard i
  • iOS绘图3D图形库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在搜索一个可以帮助我绘制 3D 图表的库 我想要类似的东西这一页 http www math uri edu bkaskosz fla
  • 使用 std::function w/ std::bind 时的 EXC_BAD_ACCESS

    升级到 XCode 5 后 使用 std function 和 std bind 似乎会生成 EXC BAD ACCESS 异常 看起来好像 std function 实现中的 base 指针最终为空 导致访问错误 但我不清楚为什么会出现这
  • Swift 中通过可选绑定进行安全(边界检查)数组查找?

    如果我在 Swift 中有一个数组 并尝试访问超出范围的索引 则会出现一个不足为奇的运行时错误 var str Apple Banana Coconut str 0 Apple str 3 EXC BAD INSTRUCTION 但是 我会
  • Swift - 保存在 TableView 中选择的复选标记

    我对 Swift 相当陌生 并且在 TableView 多重选择方面遇到问题 我有多个选择 可以用复选标记进行检查 类似于待办事项列表 当我检查项目时 我希望能够返回 ListView 并保存我的选择 我假设将其保持在已保存状态的代码将位于
  • 如何从第二个视图弹回到根视图?

    我使用 2 将 3 个视图 根视图 第 1 个视图 第 2 个视图 连接在一起modal在 Apple Watch 故事板中继续 1 在根视图中 按下 保存 按钮后 将显示第一个模态视图 2 在第一模态视图中 一旦按下 500 按钮 将显示
  • iOS 搜索栏不显示结果

    更新 这实际上有效 我的自定义单元格的样式尚未出现 因此单元格看起来是空白的 那我怎样才能得到searchResultsTableView使用我的自定义单元格 我在表格视图中实现了搜索栏 当我调试时搜索 过滤所有工作 但是当我在搜索栏中输入
  • 带有自定义字体的 UILabel 错误呈现

    在我的 iPhone 应用程序中 我为所有 UILabel 设置了自定义字体 更准确地说 我对 UILabel 进行了子类化 重写了一个方法 在该方法中设置了自定义字体 然后将 IB 中的所有标签设置为该自定义类 现在的问题是 所有文本都渲

随机推荐