我有这个代码在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:
的情况下向我提供有关如何操作的提示或提示吗?
答案 0 :(得分:2)
你做不到。 drawRect:
内部是当前上下文进入屏幕的唯一时间。你必须使你的“其他目的”与这个矩形绘图代码共存。
但是,您可以将此代码视为另一种方法,只要它仅从drawRect:
内部调用即可。
答案 1 :(得分:2)
你做不到。唯一一次UIGraphicsGetCurrentContext()
对您的观看有效的时间是drawRect:
。您可以绘制到drawRect外部的图层,但如果您想要实际看到它,则仍需要将该图层绘制到drawRect:
中的视图中。