使用CATiledLayer绘制文本

时间:2012-05-10 01:48:06

标签: iphone objective-c ios core-graphics

我有一个UIView子类MyTextView,我添加到scrollView,它只有一堆文字,但它有时会很长(约50,000 px高) )。使用NSString's drawInRect方法等常规绘图方法显然不是正确的方法,所以现在我正在研究CATiledLayer来帮助我绘制文本。不幸的是,没有足够的例子来帮助用CATiledLayer绘制文本,我想知道是否有人知道如何开始这项任务。

在UIScrollView中绘制真正长文本时,使用CATiledLayer是我最好的选择吗?

(我不想使用UITextView,因为它也可滚动 - 即使我使用它,我也不希望它可滚动,我将它的帧设置为50,000 px高,这并没有解决我的问题(请记住,我将这个视图添加到scrollView,所以在scrollView中的UITextView不是很有趣))。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不知道CATiledLayer是最好的但是为了让你开始,你可以自己绘制每个瓷砖的文字内容。

创建图层并设置委托:

   CATiledLayer *tiledLayer = [CATiledLayer layer];
    tiledLayer.delegate = self;
    tiledLayer.tileSize =  CGSizeMake(768, 1024);
    tiledLayer.levelsOfDetail = 4;
    tiledLayer.levelsOfDetailBias = 2;
//etc.....

然后只是正常的CGContext绘图代码:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx

你可以获得绘图的矩形和/或比例

CGRect rect = CGContextGetClipBoundingBox(ctx);
CGFloat scale = CGContextGetCTM(ctx).a;

有关设置图层委托的文档中的一句话:

  

在iOS中,如果图层与UIView对象关联,则此属性   必须设置为拥有图层的视图。