私のアプリケーションでは、単純なFigureの描画を行うことができます(より安定したコードを得るまで、私は1つのFigureのみを貼り付けています)。私はUIView
を作成するために使用するコードは以下の通りである。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);
}
、この:
この図はあります「容器」UIView
の内側にあり、内側はUIScrollView
です。私の問題は、私の姿をサイズ変更して、サイズが約1000 * 1000(私の "コンテナ"は20,000 * 20,000)に達したとき、私はメモリ警告を受け取り、アプリケーションはついに諦めます。だから私の質問は:
1)UIView
の最大サイズを入れてみるべきですか?
2)この種の問題を追跡するために計測器を使用して、どのように問題が発生しているのか(または重い持ち上げがどこで行われているのか)を確認するにはどうすればよいでしょうか。
3)thisのようなキャッシュを使用する必要がありますか?
4)を描画するときに、いくつかの一般的なベストプラクティスを考慮する必要がありますか?
5)私はCALayer
を考慮する必要がありますが、私は触れる必要がありますか?
UIView
のリサイジングは、ほとんどがthisに基づいています。
QuartzCoreの使用を検討しましたが、ビューのレイヤープロパティを使用して境界線を描いただけでしたか? – runmad
事は:これは簡単な図です。最終的に私はもっと複雑なものを持っています。私は 'UIView'のプロパティで遊んでいるとは思えません。しかし、提案に感謝します。 – Peres
大きなコンテンツを(多分ズームで)描画する必要がある場合は、「CATiledLayer」をチェックしたいかもしれません。http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CATiledLayer_class/Introduction/Introduction.html – Bastian