将子视图添加到 UICollectionView - 禁用滚动
Posted
技术标签:
【中文标题】将子视图添加到 UICollectionView - 禁用滚动【英文标题】:Adding subview to UICollectionView - disables scrolling 【发布时间】:2015-07-20 03:27:01 【问题描述】:我想向 UICollectionView 添加一个子视图,以便制作一个随 collectionview 滚动的左侧面板。
使用
[self.collectionView addSubview:myView]
所有触摸都被禁用,我无法再滚动视图。我读过像这样向 collectionView 添加子视图是不好的做法。这是真的吗?为什么在
时它会禁止触摸到达collectionView事件userInteractionEnabled = NO
我正在尝试这样做:imgur link 通过抓取每个部分中第一个单元格的框架位置,并向 myView 添加一个具有相同 y 值的点。
感谢您的帮助!
【问题讨论】:
你在使用 UICollectionViewController 吗? @muku no,自定义视图控制器。[self.view insertSubview:myView aboveSubview:self.collectionView ]
,你试过了吗
虽然这确实恢复了滚动能力,但视图不会随着 collectionview 滚动
【参考方案1】:
使用addSubview:
方法将子视图添加到UICollectionView
是非常糟糕的做法。它会在 CollectionView 的正常行为中导致许多不同的问题。它可以遮挡其下方的视图,捕获触摸事件,阻止它们到达 CollectionView 中的实际滚动视图等。使用此方法添加的子视图也不会像 CollectionView 中的其他元素那样滚动。
正确的做法是为点实现一种新类型的UICollectionViewCell
,并在prepareForLayout
和layoutAttributesForElementsInRect:
方法中计算它们的位置。基本上,每一行都会有一个或两个单元格。哪些会有两行,由你在我提到的方法中确定。
事实上,Apple 的文档有一个完美的示例,它比您尝试实现的目标还要复杂。你应该从this link查看它。
【讨论】:
【参考方案2】:我可以知道滚动视图的用途吗?因为,如果您正在寻找仅显示标签或图像等的子视图,如果我没记错的话,您可以使用自定义 collectionview 单元格...希望它有所帮助:) :)
【讨论】:
以上是关于将子视图添加到 UICollectionView - 禁用滚动的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式使用自动布局将子视图添加到 UICollectionView 不起作用