覆盖由内置 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 类型执行的活动的主要内容,如果未能解决你的问题,请参考以下文章
覆盖 UIActivityViewController 默认行为