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 显示无关的行