3

是否有最大 CALayer 大小?

我有一个很长的垂直列表,其中 rootLayer 和子层作为项目,在 ~16k rootLayer 的高度之后,我CoreAnimation: surface WIDTH x HEIGHT is too large[rootLayer addSublayer:].

有没有办法制作一个非常大的图层?我尝试使用CATiledLayer而不是CALayer没有成功。

UPD

这是我的代码

static const NSSize itemSize = { 600, 100 };

#import "CAView.h"

@implementation CAView

- (id)initWithFrame:(NSRect)frameRect
{
    self = [super initWithFrame:frameRect];

    CATiledLayer* layer = [CATiledLayer layer];
    layer.tileSize = itemSize;

    self.layer = layer;
    self.wantsLayer = YES;

    return self;
}

- (void)addLayer
{
    static CGFloat itemY = 0.0;

    CATextLayer* layer = [CATextLayer layer];
    layer.string = [NSString stringWithFormat:@"item %ld", [self.layer.sublayers count]];
    layer.backgroundColor = [[NSColor redColor] CGColor];
    layer.frame = NSMakeRect(0, itemY, itemSize.width, itemSize.height);

    [self.layer addSublayer:layer];

    itemY += itemSize.height;

    NSRect frame = self.frame;
    frame.size.height = itemY;

    self.frame = frame;
}

@end

当视图尺寸变大时,最大 OpenGL 纹理尺寸会在我的视图中闪烁,并且控制台日志中的“CoreAnimation:表面宽度 x 高度太大”。

4

0 回答 0