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

时间:2013-01-07 22:35:40

标签: ios uiactivityviewcontroller uiactivity

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

例如,我希望Facebook活动使用我自己的自定义视图而不是内置视图。我知道您可以将UIActivity子类化为自己的应用程序特定活动,但是您是否始终坚持使用内置的默认行为?

2 个答案:

答案 0 :(得分:6)

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

然而,视觉上这意味着您必须为这些服务提供自己的图标图像。然后,Apple的代码将拍摄这些图像,丢弃颜色数据并使用alpha贴图制作一个灰色调版本,与Apple通常的黑点背景相对应。您无法为自己的自定义活动提供彩色图像。据推测,这是为了阻止人们复制“官方”服务图标并为了自己的目的而颠覆它们,即假装在实际做一些完全不同的事情时向Facebook发布内容。

答案 1 :(得分:1)

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