这个错误是无效的上下文0x0?

我在ViewDidLoad中编写了以下代码

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -(void)viewDidLoad { [super viewDidLoad]; NSString *str = [NSString stringWithFormat:@"Veer"]; CGColorSpaceRef rgbColorspace = CGColorSpaceCreateDeviceRGB(); CGFloat values[4] = {55.0, 0.0, 0.0, 1.0}; CGColorRef glowColor = CGColorCreate(rgbColorspace, values); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetShadowWithColor( context, CGSizeMake( 5.0, 0.0 ), 20.0f, glowColor); [str drawAtPoint:CGPointMake(10.5f, 0.5f) withFont:[UIFont fontWithName:@"Helvetica" size:100.0f]]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(60, 200, 250, 100)]; [label setBackgroundColor:[UIColor clearColor]]; label.font=[UIFont fontWithName:@"DBLCDTempBlack" size:50.0]; label.textColor = [UIColor colorWithRed:0.0 green:1.0 blue:0.0 alpha:1.0]; [label setText:str]; [self.view addSubview:label]; } 

在控制台我看到了

  Testing Clock[3286] : CGContextSetStyle: invalid context 0x0 Testing Clock[3286] : CGContextSetFont: invalid context 0x0 Testing Clock[3286] : CGContextSetTextMatrix: invalid context 0x0 Testing Clock[3286] : CGContextSetFontSize: invalid context 0x0 Testing Clock[3286] : CGContextSetTextPosition: invalid context 0x0 Testing Clock[3286] : CGContextShowGlyphsWithAdvances: invalid context 0x0 

您应该将该自定义绘图代码移出viewDidLoad并将其移动到drawRect。

如果要实现自己的drawRect方法,还需要子类化视图。

查看此示例:http: //ykyuen.wordpress.com/2010/08/27/iphone-uiview-with-border/

您只需在绘制之前检查上下文是否存在:

 CGContextRef context = UIGraphicsGetCurrentContext(); if (context) { // Do your stuff }