在不使用drawRect的情况下在视图中绘制多个矩形:

时间:2012-07-09 05:29:13

标签: objective-c cocoa-touch uiview drawrect

我有这个代码在UIView

中生成多个矩形
CGContextRef ctx = UIGraphicsGetCurrentContext();

CGContextSetLineWidth(ctx, 0.5);

CGContextSetStrokeColorWithColor(ctx, [UIColor blueColor].CGColor);

//newView.xPoints is always equal in count to the other two arrays below.    
for (int i = 0; i < [newView.xPoints count]; i++) 
{
    CGFloat tx = [[newView.xPoints objectAtIndex:i]floatValue];
    CGFloat ty = [[newView.yPoints objectAtIndex:i]floatValue];
    CGFloat charWidth = [[newView.charArray objectAtIndex:i]floatValue];

    CGRect rect = CGRectMake(tx, (theContentView.bounds.size.height - ty), charWidth, -10.5);
    CGContextAddRect(ctx, rect);
    CGContextStrokePath(ctx);
}

我在drawRect:尝试了它并且它工作得非常好。但是,我打算将drawRect:用于其他目的。那么,任何人都可以在不使用drawRect:的情况下向我提供有关如何操作的提示或提示吗?

2 个答案:

答案 0 :(得分:2)

你做不到。 drawRect:内部是当前上下文进入屏幕的唯一时间。你必须使你的“其他目的”与这个矩形绘图代码共存。

但是,您可以将此代码视为另一种方法,只要它仅从drawRect:内部调用即可。

答案 1 :(得分:2)

你做不到。唯一一次UIGraphicsGetCurrentContext()对您的观看有效的时间是drawRect:。您可以绘制到drawRect外部的图层,但如果您想要实际看到它,则仍需要将该图层绘制到drawRect:中的视图中。