我在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] <Error>: CGContextSetStyle: invalid context 0x0
Testing Clock[3286] <Error>: CGContextSetFont: invalid context 0x0
Testing Clock[3286] <Error>: CGContextSetTextMatrix: invalid context 0x0
Testing Clock[3286] <Error>: CGContextSetFontSize: invalid context 0x0
Testing Clock[3286] <Error>: CGContextSetTextPosition: invalid context 0x0
Testing Clock[3286] <Error>: CGContextShowGlyphsWithAdvances: invalid context 0x0
答案 0 :(得分:4)
您应该将该自定义绘图代码移出viewDidLoad并将其移至drawRect。
如果要实现自己的drawRect方法,还需要对视图进行子类化。
查看此示例:http://ykyuen.wordpress.com/2010/08/27/iphone-uiview-with-border/
答案 1 :(得分:4)
您只需在绘图前检查上下文是否存在:
CGContextRef context = UIGraphicsGetCurrentContext();
if (context) {
// Do your stuff
}