iphone - 如何在 iPhone 中创建自定义时间栏?

标签 iphone objective-c ios customization quartz-graphics

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

有什么想法,我该如何开始?

谢谢

Demo View

最佳答案

如果蓝条移动不多,并且您不需要经常调整此 View 的大小(在 iPhone 上通常是这种情况),那么我建议子类化 UIControl(或 UIView)并实现自己做。

有一个 NSArray 属性存储 NSDate 对象和方法,如 addDate:, removeDate:, removeDateAtIndex: 来改变它的内容从另一个对象(就像你的 View Controller )。在这些方法中,您可以添加或删除传递的日期并调用 [self setNeedsDisplay]; 来重新绘制线条。

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

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

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

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

关于iphone - 如何在 iPhone 中创建自定义时间栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10583474/

相关文章:

iphone - 如何在 iOS 的 UIWebView 中获取所选文本和图像的 HTML 代码?

ios - 更改 UIImage 中某些特定像素的颜色

iphone - 在 App 内发送电子邮件

objective-c - 为什么 fscanf 可以与fine一起工作而不使用参数3+的地址?

objective-c - iOS设备和iPhone模拟器的内存组织差异

ios - 以编程方式更改不同 iPad 屏幕分辨率上的 .xib 大小

iphone - 从图像中检索 RGBA 值

iphone - 如何使用 Quartz 绘制钢笔笔画?

ios - 如何实现tableView滚动到顶部隐藏tableheaderView中的搜索栏?

android - GPS 跟踪应用的最佳后端选择