1

我需要创建一个时间栏,如所附图像。蓝线是指示某些操作的日期。大红色箭头标记用于滑动以选择任何蓝线。在背景栏分为年份。红色小圆圈表示年份。

任何想法,我该如何开始?

谢谢

演示视图

4

2 回答 2

0

如果蓝条移动不多,并且您不需要经常调整此视图的大小(这通常是 iPhone 上的情况),那么我建议继承 UIControl(或 UIView)并自己实现它。

有一个 NSArray 属性存储 NSDate 对象和方法,如addDate:, removeDate:removeDateAtIndex:以从其他对象(如您的视图控制器)更改其内容。在这些方法中,您可以添加或删除传递的日期并调用[self setNeedsDisplay];以重绘线条。

您将需要一些方法来计算滑块上日期的位置(以像素为单位)并计算特定坐标处的日期。这应该很容易(基本线性插值)。

并假设红色滑块只能指向蓝线(但不能指向蓝线),将 NSDate 指针变量添加到当前选定的日期。在里面

在 drawRect: 方法中,您需要使用 CoreGraphics 函数绘制所有线条。如果您需要这方面的帮助,请查阅文档。Apple 也有一些很棒的示例应用程序。

要显示红色滑块,您可以使用 UIPanGestureRecognizer 添加自定义 UIImageView,并确保它仅在手势处理程序中垂直移动。或者可以添加一个没有轨道图像的 UISlider(我对此不是 100% 确定)。无论哪种情况,您都需要在用户离开后调整滑块的位置,使其跳到最近的蓝线。

于 2012-05-14T12:51:52.233 回答
0

一个粗略的思路,1.获取整个TimeBar的长度。让它为t。2.除以x=numberofYears*365.设t_eachday_pos=t/x 3.得到每一天的位置,计算其偏移量为daycount*t_eachday_pos;4. 将您的 blueLine 添加为 customButton。5. 要执行一些操作,请传递 x 天数(例如,第 2 年的第 245 天等)

试试这个,我在我的一个应用程序中使用了同样的东西,它正在工作

于 2012-05-14T12:55:06.180 回答