【发布时间】:2011-11-03 05:08:37
【问题描述】:
概要
我想构建一个在日历中显示事件的自定义控件。
这是草稿:
概念
- 左下方的框可以垂直滚动。右下角的框可以双向滚动。
- 可以移动事件视图。如果它们在拖动视图时接近边界,则会向该方向自动滚动。
- 根据数据库中最早和最新的事件或某个最大值,滚动区域是有限的。但是,如果用户继续滚动,滚动区域会相应增长,如果用户向后滚动并且没有创建新事件,则滚动区域会折叠。
- 底部的“2011 年 7 月”按钮用作滚动条。如果用户将其拉出滚动区域的边界,它会相应地增长。
- 标题中的月份名称始终保持在此位置,直到下个月进入,所以它是一个长单元格,跨越月份的日期单元格,带有浮动标题。
- 标题行和列始终可见。
问题
由于我对 Cappuccino 或 Cocoa 的控件类的功能只是稍微熟悉:我在哪里可以直接使用 Cappuccino 或 Cocoa 类,在哪里子类化 Cappuccino/Cocoa 控件是合理的,我必须在哪里编写自定义从头开始控制?
编辑:我的想法
我认为使用带有垂直分隔符的 SplitView 来合理划分控件是合理的。我可以在左侧子视图的左侧标题列中使用 TableView。我可以将垂直滚动与右侧发生的事情同步。
但我不太确定右侧的视图。我考虑过 TableView,但实际上我只需要将单元格作为背景网格。因此,我想,很难有两个标题行并实现所需的滚动行为。所以最好的方法可能是创建一个全新的自定义视图。但又是一个问题:将 Cappuccino 子类化在哪里是合理的。 Cocoa 控件以及我必须在哪里从头开始编写自定义控件?
【问题讨论】:
标签: objective-c cocoa cappuccino objective-j