用附加控件注释UICollectionViewselect的devise
使用UICollectionView
和在这里给出的StackOverflow的优秀帮助,我已经能够为我的iPhone构build一个“甘特图”风格控制:
除了化妆品(我现在正在做function,我有一个graphicsdevise师可以看看颜色和所有这些)。
除了背景之外,使用自定义UICollectionViewLayout
子类的跨度相对比较简单。 每个跨度是一个item
。
但是我需要添加一些function,并且不确定如何继续。 我试图去的地方大致如下:
撇开粗略的化妆品,重点是我想“注释”,无论目前select的跨度与额外的信息(我保证找人帮我看起来很漂亮)。 而且我希望它们是活跃的,我不确定它是否会引起编辑控制或拖动,但是我希望能够识别数字或粗线上的手势,并且使用它们进行操作,与触摸不同驱动select的跨度。
我可以想到(至less)3种方式来尝试和实现这个:
-
使用补充意见。 导致select
invalidateLayout
,在我的prepareLayout
检测选中的状态,并为两个锚点生成额外的布局属性。 实现绘制UICollectionReusableView
的子类,并添加可触摸的子视图(或其自己的手势识别器)。 这感觉…错了。 我认为补充视图更多的是页眉和页脚,而不是随着select状态的变化而出现的控件。 但也许这是该设施的适当扩展? -
使用我当前的SpanCell类(它是
UICollectionViewCell
一个子类)的backgroundView
(或selectedBackgroundView
,不知道它的问题)。 只要我禁用clipsToBounds
,我可以绘制围绕bounds
的注释。 我将不得不透露一些大局的知识以find终点,但那不是太冒犯。 我只是显示/隐藏这个视图来响应select的改变。 这似乎是最好的办法。 -
在整个
UICollectionView
的主backgroundView
中进行。 如图所示,我已经有了一个专门的backgroundView
,它显示了当前的时间网格,条forms。 我可以进一步扩展这个视图来绘制注释和pipe理可触摸的子控件来响应select的改变。 这会给我最直接的实现,但感觉就像一个巨大的怪物“为了背景做了太多的工作”。
问题是,对于那些有更多经验的人,你会走哪条路? 会不会是以上3个之一? 或者不同的东西? 为什么?
虽然你的问题是UICollectionView
实现,我不是很熟悉,这似乎是一个容器的作业(在这种情况下,收集视图)的技术。 想象一下,除了选定的项目之外,还需要注释来考虑其他项目吗? 例如,避免注释行与其他项目之间的冲突?
对我来说,选项3似乎是最正确的选项。 如果担心大类,可以将其外联到注释控制器类,每当注释应该更新时应该通知注释控制器类。