【发布时间】:2011-01-13 23:02:05
【问题描述】:
我有两个 UIScrollView 实例,我想在它们之间画一条垂直线(不是 100% 的高度,更像是 80%)。我怎样才能做到这一点?
【问题讨论】:
我有两个 UIScrollView 实例,我想在它们之间画一条垂直线(不是 100% 的高度,更像是 80%)。我怎样才能做到这一点?
【问题讨论】:
使用核心图形。将两个 UIScrollView 嵌套在另一个视图中,并覆盖父级的 drawRect 方法。有关绘图的更多详细信息,请参阅 Apple 的 UIView documentation,有关绘图的更多信息,请参阅 Core Graphics Context Reference。
- (void) drawRect: (CGRect) rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
// Draw divider
UIGraphicsPushContext(context);
// Fill the background, this must happen if the view is not opaque.
if (self.opaque)
{
[[UIColor whiteColor ] set];
CGContextFillRect(context, rect);
}
[[UIColor grayColor] set];
CGContextSetLineWidth(context, 1);
CGContextBeginPath(context);
CGContextMoveToPoint(context, rect.size.width * 0.5, 0.1 * rect.size.height);
CGContextAddLineToPoint(context, rect.size.width * 0.5, 0.9 * rect.size.height);
CGContextStrokePath(context);
UIGraphicsPopContext();
}
编辑
为了解决我的疏忽,我知道没有简单的方法可以在子视图之上绘制。
可以使用与上述相同的基本视图层次结构来模拟此行为。子类 UIView 以创建不接受任何触摸事件的完全透明的视图。将绘图代码(我在上面的代码中添加了不透明度的条件)放在自定义视图中,然后在视图层次结构的前面插入自定义视图的实例。
【讨论】:
视图之间的垂直线也可能只是一个细而高的 UIView(在滚动视图的顶部),具有纯色背景。这意味着您无需担心自定义绘图代码。这也让您可以在 Interface Builder 中进行布局、使用自动调整大小等。
【讨论】: