iOS 8.3:UIActivityViewController 显示无关的行

Posted

技术标签:

【中文标题】iOS 8.3:UIActivityViewController 显示无关的行【英文标题】:iOS 8.3: UIActivityViewController shows extraneous row 【发布时间】:2015-04-16 11:29:16 【问题描述】:

我有一个 UIActivityViewController 已排除(使用 excludedActivityTypes)所有 UIActivityCategoryAction 活动类型。

ios 8.2 中,UIActivityViewController 将只显示一行,用于 UIActivityCategoryShare 活动类型。

在 iOS 8.3 中,UIActivityCategoryAction 出现空行。请参阅下面的屏幕截图,其中第二行只有“更多”。

如何在 iOS 8.3 中删除 UIActivityViewController 中的 UIActivityCategoryAction

【问题讨论】:

我遇到了相反的问题 - 第一行显示“更多...”,其中没有任何内容,然后我的操作项位于第二行。在 8.2 上它只会显示一行。 可能重复:***.com/questions/29424570/… 您可以显示几行来创建和显示UIActivityViewController。这样,任何想要帮助您的人都可以更快地开始尝试解决给定的问题。 如果您只想使用 AirDrop(或其他一些自定义 UIActivityItemSource),情况会更糟。在 iOS8.2 中它只会显示 AirDrop 行。现在在 8.3 中,我得到 two 无用的“更多”行。 (我确实发布了一个屏幕截图和一些显示这一点的代码 - 但答案被删除了:-() @Randomblue:我已经就这个问题向 Apple 提交了雷达 (20928376)。也许他们会解决它? 【参考方案1】:

在 iOS 8 中,UIActivityViewController 仍然是一个 API,只提供自定义功能,不提供自定义 UI。你无法改变它的外观。您可以更改的视觉样式的唯一部分是自定义 UIActivity 子类的图标。 (ref)

这是 Apple 的实现方式,从 8.3 开始无法更改。如果你真的想避免多余的行和“更多”按钮,你可以实现一个 UIActivityViewController 替换。以下是最近维护的一对:


OvershareKit


URBNShareKit


参考资料:

UIActivityViewController Hide More from Actions UIActivityViewController on iOS 8 show "more" button with custom activities Can I exclude "More" Button in UIActivityViewController? http://getnotebox.com/developer/uiactivityviewcontroller-ios-8/

【讨论】:

@RandomBlue 这是我能为您提供的最佳答案。我现在在商店里有 iOS 应用程序,我必须忍受这个。这正是我们现在必须为 8.3 做的事情。恐怕工作圈子里的人没有更好的解决方案。【参考方案2】:

这是设计使然,因此用户可以添加回他们隐藏的系统和第三方操作。

【讨论】:

【参考方案3】:

更多为系统默认。用于重新排序应用程序。对于扩展(在 IOS 8 中引入),More 按钮用于重新排序应用程序以及在对话中添加应用程序。我们无法控制它。

希望对您有所帮助。

【讨论】:

这个设计很糟糕。如果没有扩展,也没有可重新排序的内容,那么 More 按钮应该会消失。 @randomblue,我想在下一次推出的苹果开发者中修复了这个问题。 @Randomblue 它的设计并不是很糟糕。这是您提供的 Apple 控制的功能......您甚至不应该关心它的外观,因为它是一个标准化的屏幕。【参考方案4】:

我找到了删除 UIActivityCategoryAction 的方法。 像那样: demo

由于 UIActivityCategoryAction 是 CollectionView 的第二部分, 你可以找到collectionView的dataSource,通过方法swizzling改变“numberOfSectionsInCollectionView:”的实现。 这是演示:enter link description here

【讨论】:

【参考方案5】:

UIActivityCategoryAction 是 UIColletionView 的第二个section,将section的个数改为1,UIActivityCategoryAction就会消失。

这里是demo

【讨论】:

以上是关于iOS 8.3:UIActivityViewController 显示无关的行的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8.3:UIActivityViewController 显示无关的行

iOS 8.3:UIActivityViewController 显示无关的行

当设备连接由 iOS 8.3 供电时,设备在 Xcode 6.1 中不合格

iOS 8.3 Facebook 错误未登录

iOS 8.3 上的布局位移

自动布局在 ios 8.3 上无法正常工作