2

サブビューとしてUIView約600のこの巨大なものがあります。UIButtonsUIView約 2000 x 2000 ピクセルで、UIScrollView. CATiledLayerこの巨人のレンダリング レイヤーとして実装しようとしUIViewていますが、タイルをレンダリングする方法がわかりません。タイル画像、pdfなどをカバーする多くの例を見つけましたがCATiledLayer、多くのサブビューで完全な UIView を描画する方法に関する実際の例は見つかりませんでした。あなたはおそらく、なぜ私が固執したいのかと尋ねているでしょうUIView? ユーザーがボタンを使用してビューを操作し続けてほしいからです。

誰かがメソッドの実装方法に関する例または疑似コードを持っているかどうか疑問に思っています。サブビューとして多くの- (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context巨大なものが1つあることに注意してください。UIViewUIbuttons

4

1 に答える 1

3

iOS 4.0 以降では、drawRect:代わりにdrawLayer:inContext:. Apple からのこの Q&A で説明されています: http://developer.apple.com/library/ios/#qa/qa1637/_index.html。重要な点は、drawRect: in 4 がスレッドセーフになり、UIKit グラフィック機能を使用できるようになったことです。

を使用するには、このメソッドをオーバーライドする必要がありますCATileLayer

+(Class)layerClass
{
    return [CATiledLayer class];
}

しかし、あなたは今すぐ使用することができますdrawRect:

-(void)drawRect:(CGRect)rect
{
    //normal drawing routines here.
}

メソッドに渡される rect はタイルのサイズになり、特定の rect に何を描画する必要があるかを決定する必要があります。の威力はCATiledLayer、画面に表示されているタイルの描画のみを呼び出すことです。また、バックグラウンド スレッドを使用し、非常に高速です。

CATiledLayer私はUIViewsでは使用していません。大きな画像のみです。UIViews独自のdrawRect:実装を持つサブクラスですか? drawRect:現在の四角形に表示されるビューを決定し、それらのメソッドを呼び出す必要があると思います。

使用drawRect:は iOS 4.0 以降のみで、それ以前のバージョンでは動作しません。

于 2011-04-28T14:08:31.123 に答える