是否可以覆盖由UIActivityViewController使用的内置UIActivity类型执行的活动?
例如,我希望Facebook活动使用我自己的自定义视图而不是内置视图。我知道您可以将UIActivity子类化为自己的应用程序特定活动,但是您是否始终坚持使用内置的默认行为?
答案 0 :(得分:6)
您无法覆盖内置的内容。您可以做的最好的事情是停用它们并用您自己的UIActivity子类替换它们。从功能上讲,这与覆盖它们具有相同的效果。
然而,视觉上这意味着您必须为这些服务提供自己的图标图像。然后,Apple的代码将拍摄这些图像,丢弃颜色数据并使用alpha贴图制作一个灰色调版本,与Apple通常的黑点背景相对应。您无法为自己的自定义活动提供彩色图像。据推测,这是为了阻止人们复制“官方”服务图标并为了自己的目的而颠覆它们,即假装在实际做一些完全不同的事情时向Facebook发布内容。
答案 1 :(得分:1)
您无法覆盖内置UIActivity类型的行为 - 但您可以通过提供自己的UIActivityItemProvider
子类来覆盖它们获得的数据。
为此,你必须覆盖– activityViewController:itemForActivityType:
因此,虽然它不是100%你正在寻找的东西,但至少可以根据你的意愿弯曲内置的那些。