UIImage(UIGraphicsBeginImageContextWithOptions())创建比使用PNG的init更快吗?

时间:2013-05-09 01:18:18

标签: ios objective-c uiimage png

使用此类方法并创建纯色UIImage比创建纯色的png更快吗?

+ (UIImage*) imageWithColor:(UIColor*)color size:(CGSize)size
{
    UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
    UIBezierPath* rPath = [UIBezierPath bezierPathWithRect:CGRectMake(0., 0., size.width, size.height)];
    [color setFill];
    [rPath fill];
    UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

思想?

2 个答案:

答案 0 :(得分:1)

点击磁盘并从缓存中读取(imageNamed:)比Quartz快。

-(void) testLoadVSCreate
{
    [self testBlock:^{
        [UIImage imageNamed:@"100x100.png"];
    } times:1000];

    [self testBlock:^{
        [[self class] imageWithColor:[UIColor redColor] size:CGSizeMake(100, 100)];
    } times:1000];
}

-(void) testBlock:(void (^)(void)) block times:(NSUInteger)times {
    double a = CFAbsoluteTimeGetCurrent();
    while (times--) block();
    double b = CFAbsoluteTimeGetCurrent();
    unsigned int m = ((b-a) * 1000.0f);
    NSLog(@"%d ms", m);
}
在iPhone和模拟器上,

imageNamed:似乎更快。

2013-05-09 09:47:22.844 Graph[8032:c07] 7 ms
2013-05-09 09:47:22.948 Graph[8032:c07] 101 ms

答案 1 :(得分:0)

我认为这不会产生巨大的影响。我想说从PNG加载速度更快。 This post进行了比较。

通过代码创建图像的一大优势是,您可以轻松更改颜色,无需生成其他图像资源并将其添加到项目中。