我已经覆盖了 collectionView:viewForSupplementaryElementOfKind:atIndexPath: 以快速显示我的 JSQMessagesViewController 子类的标题 View 。这确实很好用,但标题 View 会随着聊天滚动,我希望将其固定在顶部。
Apple 在 iOS 9 中引入了 sectionHeadersPinToVisibleBounds 属性,这应该有固定的标题 View ,但由于某种原因,这在 JSQMessagesViewController 子类中不起作用。我已经添加了
self.collectionView.collectionViewLayout.sectionHeadersPinToVisibleBounds = true
查看DidLoad()
我尝试的另一个解决方案(来自这篇文章 How to make Supplementary View float in UICollectionView as Section Headers do in UITableView plain style )是继承 JSQMessagesCollectionViewFlowLayout,这几乎奏效了。向上滑动时,标题 View 固定在顶部,聊天消息推送到标题 View 下方。但是,当我尝试向下滑动时,当应用崩溃时,我的控制台中会收到以下错误:
有没有人以同样的方式为 JSQMessagesViewController 成功修复了标题 View ?
我改变的方法是
shouldInvalidateLayoutForBoundsChange:
我返回的是,
和 layoutAttributesForElementsInRect: 我改为:
Best Answer-推荐答案 strong>
我上面提供的代码是可以的。我认为导致崩溃的原因是我在 JSQMessagesViewController 子类中覆盖了 collectionView:collectionViewLayout:referenceSizeForHeaderInSection: 函数。我注释掉了该函数,而是在 JSQMessagesLoadEarlierHeaderView 中的 kJSQMessagesLoadEarlierHeaderViewHeight 常量中设置了高度。是的,我劫持了 LoadEarlierHeaderView 以显示我自己的自定义标题 View 。
现在,标题 View 固定在顶部,显示了我的自定义标题 View ,并且没有任何崩溃。
关于ios - 顶部固定有 SupplementaryView 的 JSQMessagesViewController,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/37499713/
|