CATiledLayer& Retina显示屏

时间:2012-03-16 19:47:21

标签: ios core-graphics retina-display

有没有人在视网膜显示屏上有任何改善CATiledLayer性能的技巧?

这篇文章: CATiledLayer in iPad retina simulator yields poor performance

暗示模拟器存在问题,但我也注意到实际设备上的性能不佳。这是一个非常明显的问题,因为它在视网膜显示屏上更快地加载更大的瓷砖。我能做的唯一事情就是用更多层次的细节重新处理平铺图像。

我做了一个小技巧:

    CGFloat scale = CGContextGetCTM(context).a / self.contentScaleFactor;

在计算比例时,但这似乎不足以应对糟糕的表现。

1 个答案:

答案 0 :(得分:1)

在我的平铺视图中:

- (id)initWithImageName:(NSString *)name size:(CGSize)size
{

    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] == YES && [[UIScreen mainScreen] scale] == 2.00) {

        size = CGSizeMake(size.width*2, size.height*2);

    }

    if ((self = [super initWithFrame:CGRectMake(0, 0, size.width, size.height)])) {

        CATiledLayer *tiledLayer = (CATiledLayer *)[self layer];

        tiledLayer.levelsOfDetail = 4;
        if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] == YES && [[UIScreen mainScreen] scale] == 2.00) {

            tiledLayer.tileSize = CGSizeMake(512, 512);
        }

    }

    return self;
}

这让我的iPad 3像iPad一样工作。如果您正在做其他任何事情,比如覆盖数据等,那么您可能需要做更多的争论。实际上,这只会使您的内容大小和图块的大小翻倍,从而抵消视网膜显示效果。

您可能还想更改视网膜的最大和最小缩放尺寸