我的应用程序可以绘制一些简单的图形(在我得到更稳定的代码之前,我只使用一个图形),并且还可以调整它们的大小。我用来创建 UIView
的代码如下:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
[self setContextFillColor:context];
[self setContextStrokeColor:context];
[self setLineWidth:context];
CGFloat lineThickness = [self lineWidth] ;
CGFloat halfLineThickess = lineThickness / 2.0f;
CGContextAddRect(context, CGRectMake(halfLineThickess,halfLineThickess, rect.size.width - lineThickness, rect.size.height - lineThickness));
CGContextDrawPath(context, kCGPathEOFillStroke);
}
当我输入大小为(100.0f,100.0f)时,会得到以下结果:
这个图形在“容器”UIView
中,而该容器又位于UIScrollView
内部。 我的问题是,当我重新调整图形大小并达到大约1000 * 1000的大小(我的“容器”为20,000 * 20,000),我开始收到内存警告,最终应用程序放弃了。因此,我的问题如下:
1) 是否应该考虑为UIView
设置最大尺寸?
2) 我如何使用工具来跟踪此类问题,并查看问题出现的位置(或重要操作在哪里)。
3) 是否应该使用某种缓存,例如这种缓存?
4) 在绘制UIView
时,是否有一些通用的最佳实践需要考虑?
5) 是否应该考虑CALayer
,尽管我需要监听触摸?
重新调整UIView
的大小主要基于此操作。
UIView
的属性就足够了。但还是谢谢你的建议。 - Rui PeresCATiledLayer
。http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CATiledLayer_class/Introduction/Introduction.html - Bastian