Apple의 PhotoScroller 예제를 수정하려고하는데 해결할 수없는 문제가 발생했습니다.Apple의 PhotoScroller 예제를 사용하여 추가 이미지를 미리로드하십시오.
기본적으로 PhotoScroller는 원래 이미지 배열을 로컬로로드했습니다. 이 문제를 수정하고 URL에서 이미지 파일을 동적으로 요청하도록 변경하려고합니다. 사용자가 다음 페이지로 스크롤하면 새 URL에서 다음 이미지를 가져옵니다.
성능 향상을 위해 사용자가 다음 페이지로 스크롤하는 동안 다운로드되는 이미지를 기다릴 필요가 없도록 다음 페이지를 미리로드하고 싶습니다. 다음 페이지가 현재 페이지에 오면 그 다음 페이지가로드 될 것입니다.
나는 이것을 어떻게 달성 할 수 있을지 잘 모르겠지만 누군가가 나에게 무엇을 할 수 있는지 보여주기를 바랍니다. 여기
내 사용자 지정 코드 (애플의 PhotoScroller 예에서 전체 코드를 참조하십시오)tilePage 방법 : (그것은 사용자가있는 ScrollView를 스크롤했을 때와 시작 부분에 때마다 호출 될 것입니다)
- (void)tilePages
{
// Calculate which pages are visible
CGRect visibleBounds = pagingScrollView.bounds;
int firstNeededPageIndex = floorf(CGRectGetMinX(visibleBounds)/CGRectGetWidth(visibleBounds));
int lastNeededPageIndex = floorf((CGRectGetMaxX(visibleBounds)-1)/CGRectGetWidth(visibleBounds));
firstNeededPageIndex = MAX(firstNeededPageIndex, 0);
lastNeededPageIndex = MIN(lastNeededPageIndex, [self imageCount] - 1);
// Recycle no-longer-visible pages
for (ImageScrollView *page in visiblePages) {
if (page.index < firstNeededPageIndex || page.index > lastNeededPageIndex) {
[recycledPages addObject:page];
[page removeFromSuperview];
}
}
[visiblePages minusSet:recycledPages];
// add missing pages
for (int index = firstNeededPageIndex; index <= lastNeededPageIndex; index++) {
if (![self isDisplayingPageForIndex:index]) {
ImageScrollView *page = [self dequeueRecycledPage];
//ImageScrollView *nextpage = [self dequeueRecycledPage];
if (page == nil) {
page = [[[ImageScrollView alloc] init] autorelease];
}
[self configurePage:page forIndex:index];
[pagingScrollView addSubview:page];
[visiblePages addObject:page];
}
}
}
:
- (void)configurePage:(ImageScrollView *)page forIndex:(NSUInteger)index
{
//set page index
page.index = index;
//set page frame
page.frame = [self frameForPageAtIndex:index];
//Actual method to call image to display
[page displayImage:[self imageAtIndex:index]];
NSLog(@"index: %i", index);
}
이 URL에서 이미지를 가져올 수 :
페이지의 색인 및 콘텐츠를 구성하려면
- (UIImage *)imageAtIndex:(NSUInteger)index {
NSString *string1 = [NSString stringWithString:@"http://abc.com/00"];
NSString *string2 = [NSString stringWithFormat:@"%d",index+1];
NSString *string3 = [NSString stringWithString:@".jpg"];
NSString *finalString = [NSString stringWithFormat:@"%@%@%@",string1,string2,string3];
NSLog(@"final string is: %@", finalString);
NSURL *imgURL = [NSURL URLWithString: finalString];
NSData *imgData = [NSData dataWithContentsOfURL:imgURL];
return [UIImage imageWithData:imgData];
}
도움 주셔서 감사합니다! 로렌스