首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSStickerBrowserView贴纸走出框架

MSStickerBrowserView贴纸走出框架
EN

Stack Overflow用户
提问于 2016-12-09 13:46:47
回答 3查看 312关注 0票数 1

我正在尝试为iOS 10的消息扩展动态加载贴纸。我已经成功地加载了这些图标;但是,它们无法正确地限制消息应用程序的比例。

在消息扩展的紧凑视图中,它有一个页脚。这可以在这里看到:

在邮件扩展名的展开视图中,它有一个标题。

我通过MSStickerBrowserView的一个子视图MSStickerBrowserView加载这些贴纸。我覆盖了numberOfStickers和stickerBrowserView的超类方法来加载我的图像。

据我所知,MSStickerBrowserView只是一个UICollectionView的包装器。

无论如何,在加载贴纸之后,它们不会被限制在页眉和页脚。我附上了一个gif,下面是我的意思:

如您所见,在紧凑视图中,最后一行贴纸位于页脚下。相应地,在展开的视图中,顶行的贴纸位于标题下。

作为实验,我实现了相同的动态贴纸系统,但使用了实际的UICollectionViewController和UICollectionView (而不是MSStickerBrowser包装器),并且达到了相同的效果。此外,我试图为此创建一个自定义布局,但它产生了相同的结果。

我更喜欢使用MSStickerBrowserView,因为它已经是为此目的而设计的;但是,如果您认为UICollectionView更适合我,我愿意更改它。

请注意,通过使用MSStickerBrowserViewController和视图,UICollectionView似乎是以编程方式创建的,因此故事板约束不可用,并且我无法对视图的单元格应用任何编程构造。

我真的不确定如何解决这个问题,并希望有任何建议。

EN

回答 3

Stack Overflow用户

发布于 2017-04-29 01:32:06

我解决这个问题的方法是使用一个带有状态变量的UICollectionViewController来表示我在表示时设置的当前表示样式(.expanded或.compact)。

然后在我的UICollectionViewController的viewWillAppear中,我根据表示风格设置了集合视图的contentInset

代码语言:javascript
复制
if let style = self.presentationStyle, style == .expanded { 
    collectionView?.contentInset =  UIEdgeInsets(top: 95, left: cellPadding, bottom: cellPadding, right: cellPadding)
} 

cellPadding是我在collectionViewLayout中设置itemSize后计算出的一个数字,但95的值只是一个猜测,因为我还没有找到如何获得包含iMessage的顶部导航栏的大小。

票数 2
EN

Stack Overflow用户

发布于 2016-12-09 13:55:59

尝试取消选中视图控制器的以下选项:

Top Bar下的

希望它能起作用……

票数 0
EN

Stack Overflow用户

发布于 2017-03-16 18:45:15

您可以尝试使用序列图像板来布局视图,并在browserView下添加一个空视图来求解

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41053861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档