我有一个UIView子类MyTextView,我将它添加到scrollView中,它只有一堆文本,但有时会变得非常长(大约50000像素高)。使用常规的绘制方法,如NSString's drawInRect方法显然不是正确的方法,所以现在我使用CATiledLayer来帮助我绘制文本。不幸的是,没有足够的示例来帮助使用CATiledLayer绘制文本,我想知道是否有人知道如何开始这项任务。
在UIScrollView中绘制非常长的文本时,使用CATiledLayer是我的最佳选择吗?
(我不想使用UITextView,因为它也是可滚动的-即使我要使用它,我也不希望它是可滚动的,我将它的帧设置为50000像素高,这并不能解决我的问题(请记住,我将把这个视图添加到scrollView中,所以UITextView在scrollView中并不是很有趣)。
有什么想法吗?
发布于 2012-05-10 10:10:28
我不知道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对象关联,则必须将此属性设置为拥有该图层的视图。
https://stackoverflow.com/questions/10526501
复制相似问题