ダイアグラムを描画する iPad アプリのプロトタイプを作成しています。次のビュー階層があります。
UIView UIScrollView DiagramView : UIView TabBar ナビゲーションバー
そして、それらすべてをまとめた UIViewController サブクラスです。
ダイアグラムを初めて描画する前に、ダイアグラムの寸法を計算し、DiagramView フレームをそのサイズに設定し、スクロールビューのコンテンツ サイズも設定します。
-(void)recalculateBounds
{
[renderer diagram:diagram shouldDraw:NO];
SQXRect diagramRect = SQXMakeRect(0.0,0.0,[diagram bounds].size.width,[diagram bounds].size.height);
self.frame = diagramRect;
[(UIScrollView*)[self superview] setContentSize:diagramRect.size];
}
フレームが約 1500 x 3500 に設定されていることを明らかにする必要がありますが、これはばかげています。レンダリング コードの最適化に入る前に、アプリの他の部分に注目したいと思います。
drawRect に渡される rect が設定したサイズではなく、描画が下部で切り取られることを除いて、これは美しく機能します。私が設定したサイズに近いですが、幅が大きく、高さが短くなっています。
また、ダイアグラムが必要とするよりもはるかに大きなフレームを強制すると、 drawRect:rect は十分に大きくなり、クリッピングは発生しません。もちろん、これは、フレームサイズがツールバーのような他の画面領域を考慮する必要があるかどうか疑問に思っていますが、ドキュメントを読むと、フレームがスーパービュー座標にあることがわかります。これはスクロールビューになるので、そうしないと思いますそのようなことを心配する必要があります。
この不一致の原因は何ですか?