Rui*_*res 6 objective-c uiview drawrect ios
我的应用程序能够做一些简单的图形绘制(直到我得到一个更稳定的代码,我只坚持一个图),它也能够重新调整它们的大小.我用来创建a的代码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);
}
Run Code Online (Sandbox Code Playgroud)
这给了我,输入大小为(100.0f,100.0f),这个:

这个数字在一个"容器" UIView里面,而"容器" 又在里面UIScrollView.我的问题是当我重新调整我的身材并且我达到大约1000*1000的大小(我的"容器"是20,000*20,000)时,我开始接收内存警告并且应用程序最终放弃了.所以我的问题是:
1)我应该考虑为此设置最大尺寸UIView吗?
2)我怎样才能使用仪器来跟踪这类问题,看看问题出在哪里(或者在哪里进行繁重的工作).
3)我应该使用某种像缓存这样?
4)在绘制时,是否有一些一般的最佳实践需要考虑UIView?
5)我应该考虑一下CALayer,虽然我需要听一听吗?
重新调整大小UIView主要基于此.
您不应该创建这么大的 UIView。它太大了。此类问题正是CATiledLayer旨在解决的。基本上,您需要跟踪形状的边界框,并使用这些边界框来确定哪些图块与哪些形状相交。当系统要求给定图块时,您将绘制与其相交的所有形状。对于非常大且复杂的形状,您可以通过分割形状来进一步优化,但通常不需要这样做。
| 归档时间: |
|
| 查看次数: |
1072 次 |
| 最近记录: |