0

大きな画像が入った雑誌アプリを持っています。ページをめくりたいとき、ページがめくられるまでに大きな遅れがあります。そのため、前のページ、現在のページ、次のページをキャッシュしようとしますが、効果はありません。私はviewControllersを追加していると思いますが、それらは描画せずに画像ファイルを取得しているだけです。ページをめくる前に背景に画像を描く方法はありますか?いくつかのコードがあります:

MagazineViewController:

- (void)loadViews {
NSInteger pagesCount = [_pages count];

if (currentPage == 0) currentPage = 1;
if ([[NSThread currentThread] isCancelled]) return;

if (_curPage == nil) {
    _curPage = [[PageViewController alloc] init];
    PageView *pageView = [[PageView alloc] initWithFrame:self.view.bounds];

    [pageView setPages:_pages];
    [pageView setPage:currentPage];
    [pageView setMagazineID:_magazineID];
    [pageView buildFrames];
    //[pageView setHidden:YES];

    [_curPage setView:pageView];
    //[_flipper addSubview:magazineView];

    [pageView release];
    [[NSNotificationCenter defaultCenter] postNotificationName:kPageLoadedNotification object:nil];
}

if (_prevPage == nil) {
    if (currentPage > 1) {
        _prevPage = [[PageViewController alloc] init];
        PageView *pageView = [[PageView alloc] initWithFrame:self.view.bounds];

        [pageView setPages:_pages];
        [pageView setPage:currentPage - 1];
        [pageView setMagazineID:_magazineID];
        [pageView buildFrames];

        [_prevPage setView:pageView];
        //[_pageViewController.view addSubview:_prevPage.view];

        [pageView release];
        [[NSNotificationCenter defaultCenter] postNotificationName:kPageLoadedNotification object:nil];
    }
}

if (_nextPage == nil) {
    if (currentPage + 1 <= pagesCount) {
        _nextPage = [[PageViewController alloc] init];
        PageView *pageView = [[PageView alloc] initWithFrame:self.view.bounds];

        [pageView setPages:_pages];
        [pageView setPage:currentPage + 1];
        [pageView setMagazineID:_magazineID];
        [pageView buildFrames];

        [_nextPage setView:pageView];
        //[_pageViewController.view addSubview:_nextPage.view];

        [pageView release];
        [[NSNotificationCenter defaultCenter] postNotificationName:kPageLoadedNotification object:nil];
    }
}

メソッド「buildFrame」は、画像の位置と長方形を作成し、「[self addSubView:image]」を実行します。(自己=ページの表示)

画像描画:

- (void)drawRect:(CGRect)rect {
   [super drawRect:rect];

   if (_image != nil) [_image drawInRect:rect];
}

一つの方法を知っていますが、それは悪い方法だと思います。前と次のビューを非表示にし、セットビューを表示し始めたとき。それで、画像をロードして回転をスピードアップする他の方法はありますか?返信のためのThx。

4

1 に答える 1

0

解決策があります...前のビューと次のビューをロードし、それらを親ビューに追加して、sendSubviewToBackメソッドを使用して送り返します。素晴らしい!

于 2012-07-11T19:44:08.990 に答える