drawRect不想绘制任何东西

时间:2013-03-13 11:58:04

标签: ios cocoa-touch avfoundation drawrect

我在故事板上有一个ViewController。我使用界面构建器在屏幕底部设置工具栏。我已将自定义视图设置为视图覆盖drawRect。然而,对于我的生活,我无法在那个drawRect调用的屏幕上显示任何。 drawRect本身被称为正常,但屏幕上没有任何内容。

此外,我有一个ViewController,其方法使用AVCaptureSession将其背景切换为来自摄像头输入的实时视图。我怀疑这可能是导致错误的原因,但是在删除AVCaptureSession的所有引用之后,我仍然无法使其工作。

对不起我的写作和/或缺乏逻辑,我现在没有任何睡眠。

编辑:这是一个不起作用的代码示例。内部的每个方法都被调用,但没有任何东西可以显示。

- (void)drawRect:(CGRect)rect {
    [super drawRect:rect];

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);

    // Draw them with a 2.0 stroke width so they are a bit more visible.
    CGContextSetLineWidth(context, 2.0);

    CGContextMoveToPoint(context, 0,0); //start at this point

    CGContextAddLineToPoint(context, 100, 100); //draw to this point

    // and now draw the Path!
    CGContextStrokePath(context);
}

1 个答案:

答案 0 :(得分:7)

UIView的文档说,如果您要覆盖[super drawRect],请不要致电UIView。删除那个电话!众所周知会引起奇怪的行为。

根据the docs

  

如果直接子类化UIView,则执行此方法   不需要打电话给超级。但是,如果你是一个子类   不同的视图类,你应该在你的某个时刻调用super   实施