【发布时间】:2012-05-14 12:36:58
【问题描述】:
我需要像所附图片一样创建一个时间栏。蓝线是指示某些操作的日期。大红色箭头标记用于滑动以选择任何蓝线。在背景中,条形图分为年份。红色小圆圈表示年份。
任何想法,我该如何开始?
谢谢
【问题讨论】:
-
你进步了多少,你有没有尝试过?
标签: iphone objective-c ios customization quartz-graphics
我需要像所附图片一样创建一个时间栏。蓝线是指示某些操作的日期。大红色箭头标记用于滑动以选择任何蓝线。在背景中,条形图分为年份。红色小圆圈表示年份。
任何想法,我该如何开始?
谢谢
【问题讨论】:
标签: iphone objective-c ios customization quartz-graphics
如果蓝条没有移动很多,并且您不需要经常调整此视图的大小(这通常是 iPhone 上的情况),那么我建议子类化 UIControl(或 UIView)并实现自己动手。
拥有一个 NSArray 属性来存储 NSDate 对象和方法,例如addDate:、removeDate:、removeDateAtIndex:,以从其他对象(例如您的视图控制器)更改其内容。在这些方法中,您可以添加或删除传递的日期并调用[self setNeedsDisplay]; 来重新绘制线条。
您将需要一些方法来计算滑块上日期的位置(以像素为单位)并计算特定坐标处的日期。这应该很容易(基本的线性插值)。
并假设红色滑块只能指向蓝线(但不能指向蓝线),将 NSDate 指针变量添加到当前选定的日期。在
在drawRect:方法中,你需要使用CoreGraphics函数绘制所有的线。如果您需要这方面的帮助,请查阅文档。 Apple 也有一些很棒的示例应用程序。
要显示红色滑块,您可以使用 UIPanGestureRecognizer 添加自定义 UIImageView,并确保它仅在手势处理程序中垂直移动。或者可以添加一个没有轨道图像的 UISlider(我对此不是 100% 确定)。无论哪种情况,您都需要在用户离开后调整滑块的位置,使其跳到最近的蓝线。
【讨论】:
一个粗略的想法, 1.获取整个TimeBar的长度。设t。 2.除以x=numberofYears*365.设t_eachday_pos=t/x 3.获取每天的位置,计算其偏移量为daycount*t_eachday_pos; 4. 将您的 blueLine 添加为 customButton。 5. 要执行某些操作,请传递 x 天数(例如,第 2 年的第 245 天等)
试试这个,我在我的一个应用中使用了同样的东西,它正在工作
【讨论】: