不使用drawAtPoint或drawRectIn绘制NSString

时间:2012-10-15 01:37:30

标签: objective-c nsstring subclass drawrect

我已经将UILabel子类化了,我使用drawrect方法在屏幕上绘制字符串。这是我的代码:

- (void)drawRect:(CGRect)rect
{
    CGRect   aRect  = self.frame;
    NSMutableArray *Text=[globaltextarray Text];

   [[NSString stringWithCString:[[Text objectAtIndex:labelindexpath.row] cStringUsingEncoding:NSISOLatin1StringEncoding] encoding:NSUTF8StringEncoding]  drawInRect:aRect
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        withFont:[UIFont fontWithName:@"Times New Roman" size:15.0] lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentLeft];
   [super drawRect:rect];     
}

工作正常,但我的目的很慢。我需要在不使用[Label setNeedDisplay];的情况下绘制字符串,因为需要从主线程调用setNeedsDisplay。渲染工作需要在后台队列中完成。如果你能给我一个小例子,我将不胜感激。任何帮助赞赏。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以创建一个新的 CGContext ,在单独的线程上使用 CGBitmapContextCreateImage 将字符串绘制到CGImage / UIImage中,然后将位图(生成的图像)​​绘制到主视图中线程。

修改 例如,请检查此post