Google 相册 iOS 应用如何自定义原生共享表(例如 UIActivityViewController)?

Posted

技术标签:

【中文标题】Google 相册 iOS 应用如何自定义原生共享表(例如 UIActivityViewController)?【英文标题】:How did the Google Photos iOS app customize the native share sheet (e.g. UIActivityViewController)? 【发布时间】:2017-11-29 22:30:34 【问题描述】:

当您在 ios 版 Google 相册中分享照片时,Google 会在 UIActivityViewController 顶部显示自己的自定义视图。我知道这可以通过在*** UIWindow 上绘制您自己的视图来半完成,但 Google 还以某种方式隐藏了底部的“取消”按钮并填补了空白,使其 UIActivityViewController 更加“全屏”。他们是否以某种方式将 UIActivityViewController 的视图嵌入到自己的视图中?

Google 相册分享表:

标准分享表:

【问题讨论】:

【参考方案1】:

我正在寻找这个问题的答案,偶然发现了你的问题,所以我在推特上发布了这个问题。 Matthew Bischoff 向我指出了这一点,这应该或多或少地解释了它是如何完成的。 https://github.com/Jasdev/JDSActivityVC

简短的回答是你继承了 UIActivityViewController 并弄乱了结果视图。提示:你需要弄乱视图控制器的视图属性的超级视图。

【讨论】:

看起来 Google 使用了一些不同的东西,因为它允许您选择/取消选择照片 - 这需要在每次更改后创建新的活动视图控制器。也许他们正在启用allowsEmbedding 标志可以在运行时属性中看到。

以上是关于Google 相册 iOS 应用如何自定义原生共享表(例如 UIActivityViewController)?的主要内容,如果未能解决你的问题,请参考以下文章

如何像照片原生应用一样打开相册列表?

如何在iOS相册中设置自定义相册的封面?

如何将图像保存到自定义相册?

如何将图像保存到自定义相册?

如何在 iOS/macOS 云共享相册中为照片附加短数据?

在ios5的自定义相册中保存多个图像但不在相机胶卷中?