我在故事板上有一个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);
}
答案 0 :(得分:7)
UIView
的文档说,如果您要覆盖[super drawRect]
,请不要致电UIView
。删除那个电话!众所周知会引起奇怪的行为。
根据the docs:
如果直接子类化UIView,则执行此方法 不需要打电话给超级。但是,如果你是一个子类 不同的视图类,你应该在你的某个时刻调用super 实施