在StackOverflow上使用UICollectionView
和优秀的帮助,我已经能够构建一个"甘特图"我的iPhone的风格控制:
除了化妆品之外(我现在正在做功能,我还有一个图形设计师可以随时查看颜色和所有这些)。
除了背景,对于自定义UICollectionViewLayout
子类,跨度相对简单。每个范围都是item
。
但我需要添加一些功能,我不确定如何继续。我试图去的地方大致如下:
除了粗略的化妆品之外,重点是我想要#34;注释"无论当前选择的跨度是否有附加信息(我保证会找人帮我看看它)。并且我希望它们处于活动状态,我不确定它是否会显示编辑控件或拖动,但我希望能够识别数字或粗线上的手势并使用它们执行操作,不同于触及推动选择的跨度。
我可以想到(至少)3种方法来尝试实现这个:
使用补充意见。原因选择为invalidateLayout
,检测prepareLayout
中的选定状态,并为两个锚点生成其他布局属性。实现绘制的UICollectionReusableView
子类,并添加可触摸的子视图(或其自己的手势识别器)。这感觉......错了。我认为补充视图更多的是页眉和页脚,而不是随着选择状态的变化来来去去的控件。但也许它是该设施的适当扩展?
使用我当前的SpanCell类(backgroundView
的子类)的selectedBackgroundView
(或UICollectionViewCell
,不确定是否重要)。只要我禁用clipsToBounds
,我就可以在范围的bounds
周围绘制注释。我必须给它一些大局知识才能找到终点,但这并不是太令人反感。我只是显示/隐藏此视图以响应选择更改。这似乎是最好的方法。
在整个backgroundView
的主UICollectionView
中执行此操作。如图所示,我已经有了一个专门的backgroundView
,它显示了当前时间网格,条带样式。我可以进一步扩展此视图以绘制注释并管理可触摸的子控件以响应选择更改。这将给我最直接的实施,但感觉我最终会得到一个大怪物"做太多工作"对象为背景。
那么,对于那些有更多经验的人来说,你会去哪条路线?它会是以上3个中的一个吗?或者不同的东西?为什么?
答案 0 :(得分:0)
虽然你的问题在UICollectionView
实现方面非常技术性,我不太熟悉,但这似乎是容器的工作(在本例中是集合视图)。想象一下,除了所选项目之外,您还需要考虑其他项目吗?例如,避免注释行与另一个项目之间的冲突?
对我来说,3号选项似乎是最正确的选项。如果你害怕一个大类,你可以将它外加到一个注释控制器类,每当应该更新注释时都应该通知它。