1

ダイアグラムを描画する 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 は十分に大きくなり、クリッピングは発生しません。もちろん、これは、フレームサイズがツールバーのような他の画面領域を考慮する必要があるかどうか疑問に思っていますが、ドキュメントを読むと、フレームがスーパービュー座標にあることがわかります。これはスクロールビューになるので、そうしないと思いますそのようなことを心配する必要があります。

この不一致の原因は何ですか?

4

1 に答える 1

4

注意すべきことの 1 つは、3G S 以外の iPhone (および私の MacBook Air のシミュレーターでも) の最大テクスチャ サイズが 2048 x 2048 であることです。いずれかの寸法でこれを超えるビューまたはレイヤーを作成しようとすると、 、通常は単に表示されないか、表示された場合、何らかの方法で切り取られている可能性があります。明らかに、iPad でこれをテストして、同じテクスチャ サイズ制限があるかどうかを確認していません。

このような非常に大きなビューが必要な場合、これにアプローチするための推奨される方法は、CATiledLayer または CATiledLayer に基づく UIView を使用することです。次のメソッドをオーバーライドすることで、UIView サブクラスでこれを指定できるはずです。

+ (Class) layerClass 
{
    return [CATiledLayer class];
}
于 2010-03-31T02:55:44.900 に答える