【问题标题】:Iphone Draw Line on top of ScrollViewIphone 在 ScrollView 上画线
【发布时间】:2011-05-03 02:09:03
【问题描述】:

我有 UIViewController 和一个 ScrollView。我将滚动视图作为子视图添加到 UIViewController。滚动视图的主要目的是添加平铺图像。我基本上是按照developer.apple.com提供的例子来的。

http://developer.apple.com/library/ios/#samplecode/ScrollViewSuite/Introduction/Intro.html

问题是我如何在滚动视图的顶部画线。示例代码在每个图块的顶部添加标签(即在滚动视图类中)。

谁能解释一下如何在视图顶部画线。

我确实尝试使用添加行

- (void)drawRect:(CGRect)rect 
{

    CGFloat red[4] = {1.0f, 0.0f, 0.0f, 1.0f};
    CGContextRef c = UIGraphicsGetCurrentContext();
    CGContextSetStrokeColor(c, red);
    CGContextBeginPath(c);
    CGContextMoveToPoint(c, 5.0f, 5.0f);
    CGContextAddLineToPoint(c, 50.0f, 50.0f);
    CGContextStrokePath(c);
}

但这种方法的问题在于,虽然正在绘制线条,但它被隐藏在平铺图像下。

谁能帮我解决这个问题?

【问题讨论】:

    标签: iphone objective-c uiviewcontroller uiscrollview


    【解决方案1】:

    将线添加到分层在滚动视图顶部的透明子视图中?

    【讨论】:

    • 嗨,我已经尝试过该选项,但这样做我无法滚动下面的子视图。你能建议任何其他选择吗?
    • 好的,所以我认为问题是上面有你的线的层阻止了触摸事件进入被覆盖的视图。这里的一个总技巧是从 UIView 子类化这个“线视图”,在 drawRect 函数中进行绘图,并更改命中测试函数,以便它们不会命中这一层,这将允许它们传递到下面的层。我已经用一个图层和一个按钮尝试过这个,但是按钮上的图层,将我的黑客代码添加到图层,发现我可以点击按钮。我还没有想过这会引发什么问题,但是尝试一下,看看它会把你带到哪里。
    • - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { NSLog(@"%s",FUNCTION);返回零; //[super hitTest:point withEvent:event]; } - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { NSLog(@"%s",FUNCTION);返回零; //[super pointInside:point withEvent:event]; }
    • 感谢大卫。它解决了这个问题。我错过了这两种方法。
    【解决方案2】:

    使用 CAShapeLayer(代码很像您现在的代码,只是为 CAShapeLayer 构建了一个路径)。然后,您可以在滚动视图中将线层添加为子层,位于其他内容之前。

    【讨论】:

    • 嗨,我已经尝试过这个选项,但我仍然无法绘制线条。
    猜你喜欢
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多