覆盖由内置 UIActivity 类型执行的活动

Posted

技术标签:

【中文标题】覆盖由内置 UIActivity 类型执行的活动【英文标题】:Override activity performed by built-in UIActivity types 【发布时间】:2013-01-07 22:35:40 【问题描述】:

是否可以覆盖由 UIActivityViewController 使用的内置 UIActivity 类型执行的活动?

例如,我希望 Facebook 活动使用我自己的自定义视图而不是内置视图。我知道你可以继承 UIActivity 来创建你自己的应用特定的活动,但是你总是坚持内置的默认行为吗?

【问题讨论】:

是的,您可以自定义任何 UIActivity 【参考方案1】:

您不能覆盖内置的。您能做的最好的事情就是停用它们并用您自己的 UIActivity 子类替换它们。从功能上讲,这与覆盖它们具有相同的效果。

然而,这意味着您必须为这些服务提供自己的图标图像。然后,Apple 的代码将获取这些图像,丢弃颜色数据并使用 alpha 映射来制作与 Apple 通常的黑点背景相对应的灰度着色版本。您不能为自己的自定义活动提供彩色图像。大概这是为了阻止人们复制“官方”服务图标并出于自己的目的颠覆它们,即假装在 Facebook 上发布一些东西,而实际上却在做一些完全不同的事情。

【讨论】:

我担心这是唯一的方法。几乎没有那么好。【参考方案2】:

您无法覆盖内置 UIActivity 类型的行为 - 但是您可以通过提供自己的 UIActivityItemProvider 子类来覆盖它们获得的数据。 为此,您必须覆盖 – activityViewController:itemForActivityType: 因此,虽然它不是 100% 您正在寻找的东西,但您至少可以根据自己的意愿弯曲内置的。

【讨论】:

***.com/questions/26451583/…

以上是关于覆盖由内置 UIActivity 类型执行的活动的主要内容,如果未能解决你的问题,请参考以下文章

UIActivity 和 AVAsset 数据类型使用

自定义 UIActivity:ios8 中提供的未知活动项

覆盖 UIActivityViewController 默认行为

自定义 UIActivity ViewController 背景图像透明度不起作用

在完成活动之前关闭 UIActivityView

我应该从 UIActivity activityImage 返回啥 UIImage?