5

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

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

4

2 回答 2

6

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

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

于 2013-05-02T11:00:09.250 回答
1

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

于 2014-01-15T10:03:42.977 回答