2012-07-11 3 views
0

큰 이미지가 포함 된 잡지 앱이 있습니다. 페이지를 뒤집고 싶을 때 페이지가 바뀌기 전에 큰 지연이 있습니다. 그래서 이전, 현재 및 다음 페이지를 캐시하려고하지만 효과가 없습니다. 난 viewControllers를 추가하는 것 같아요.하지만 그것들은 그림을 그리지 않고서도 이미지 파일 만 가져옵니다. 페이지가 바뀌기 전에 백그라운드에서 이미지를 그리는 방법이 있습니까? 몇 가지 코드가있다 :UIPageView - 컬링 속도가 느림

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"단지 위치와 이미지의 RECT 만들고 일을 "[자기 addSubView : 영상]". (자기 = 페이지 뷰)

이미지 그리기 :

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

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

내가 수행하는 방법에 대한 하나의 방법을 알고 있지만 나는 나쁜 방법을 생각합니다. 이전 및 다음보기를 숨기고 설정보기를 표시하기 시작합니다. 그래서 이미지를로드하고 선회 속도를 높이는 다른 방법이 있습니까? 회신을위한 Thx.

답변

0

나는 해결책을 얻었습니다 ... 이전 및 다음보기를로드하고 부모보기에 추가 한 다음 sendSubviewToBack 메서드로 다시 보냅니다. 굉장해!