3

これが私が直面している問題です:背景を塗りつぶすパターン画像を持つUIScrollViewを作成しています。つまり、UIScrollView でスクロールするには背景が必要です。これの良い例は、iPad のGame Centerアプリです。背景はscrollviewでスムーズにスクロールします。

現在、この効果を実現するには 2 つの方法がありますが、どちらも優れたパフォーマンスを発揮しませんでした。最初にこれを試しました

self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:kRLCastViewBGUnit]];

残念ながら、スクロールのパフォーマンスは非常に悪く、メモリを占有しすぎました。

次に、次のように drawRect で CGContextDrawTiledImage を使用しようとしました。

- (void)drawRect:(CGRect)rect
{
    CGContextRef currentContext = UIGraphicsGetCurrentContext();

    CGContextTranslateCTM(currentContext, 0, rect.size.height);
    CGContextScaleCTM(currentContext, 1.0, -1.0);

    CGContextClipToRect(currentContext, rect);
    CGRect centerTileRect = CenterTileRect;
    CGContextDrawTiledImage(currentContext, centerTileRect, [ResourceProvider backgroundTileImageRef]);

}

新しい iPad ではまだ満足のいくものではありません。Game Center はスクロール時のパフォーマンスが非常に優れているため、何か間違ったことをしたか、いくつかの方法を誤用したに違いありません。UIScrollView バックグラウンドのパフォーマンスの問題を解決するソリューションを誰でも提供できますか? どうもありがとう!!

4

1 に答える 1

0

代わりに UITableView を使用する必要があります。これで cell.backgroundView を簡単に設定できます。

UIImageView *backgroundView = [[UIImageView alloc] initWithFrame:CGRectMake:(0.0,0.0,320.0, height)];
backgroundView.image = [UIImage imageNamed:@"Shelf.jpeg"];
cell.backgroundView = backgroundView;

また、本当に UIScrollView のみを使用する場合は、セルの背景画像を 1 つだけ使用し、colorWithPatternImage: メソッドはタイル化されたプロパティのように機能するため、画像の幅は scrollView の幅と同じにする必要があります。

この画像のみをプロジェクトに取り込み、UIScrollView の backgroundColor として使用します。

[scrollView setContentSize:CGSizeMake(320.0, 1000.0)];
[scrollView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"cellImage.png"]]];
于 2013-10-10T05:48:55.717 に答える