MacOS(Objective-C)ScrollView со страницами из буфера - C (СИ)
Формулировка задачи:
Здравствуйте, есть одна проблема: занимаюсь разработкой PDFViewer'a, надо реализвать чтобы, когда у скруллера pagesInBuffer - currentPage <= step, у нас:
1. подгружалось в конец буффера скруллера step страниц
2. удалялось из буфера step страниц
3. после currentPage было возможно просматривать старницы дальше.
Я это реализовал, не немножко(множко?) неправильно. Нужна подсказка, где и что и как неправильно\неточно\etc.
Код:
и ещё 2 метода непосредственно относящиеся к scrollview:
Сначала scrollview листает кол-во страниц(pagesInBuffer) загруженных предварительно в буффер скрулла, когда доходит до момента удаления и добавления страниц, страницы добавляются в конец буффера и удаляются из его начала, но скрулл уже потом не скруллит, а так и остаётся на последней странице до добавления.
P.S. спасибо.
P.S.S. надеюсь обойтись без шапкозакидательства(что запостил тема насчёт objective-c в разделе С\С++), спросить просто не у кого и почти негде, естественно тема висит на других форумах, но к сожалению ответов ровно 0. Поэтому надеюсь на хотя бы какую-нибудь идею, подсказку, хоть что-то
- (void) scrollViewDidScroll:(UIScrollView*) sender{ if(currentPoint.x == screenWidth){ currentPage += 1; screenWidth += 768; [self loadScrollViewWithPage:currentPage]; if(realLastPage - currentPage <= step){ for(int i = 0; i < step; i++){ [myPage loadViewForPage:page cycles:realLastPage + i append:YES filename:filename array:pageArray]; NSLog(@"size of pageArray after adding elements: %d", [pageArray count]); [pageArray removeObjectsInRange:NSMakeRange(0, step)]; NSLog(@"size of pageArray after deleting elements: %d", [pageArray count]); } realFirstPage += step; } } NSLog(@"currentPage: %d", currentPage); }
- (void)layoutScrollImages { UIImageView *view = nil; NSArray *subviews = [scroller subviews]; // reposition all image subviews in a horizontal serial fashion CGFloat curXLocation = 0; for (view in subviews) { if ([view isKindOfClass:[UIImageView class]] && view.tag > 0) { CGRect frame = view.frame; frame.origin = CGPointMake(curXLocation, 0); view.frame = frame; curXLocation += (kScrollObjWidth); //NSLog(@"pages X loc: %f", curXLocation); } } [scroller setContentSize:CGSizeMake(((pagesInBuffer - 1) * kScrollObjWidth), [scroller bounds].size.height)]; } - (void) loadScrollViewWithPage:(int) page{ NSAutoreleasePool *aPool = [[NSAutoreleasePool alloc] init]; UIImage *image = [pageArray objectAtIndex:page]; imageView = [[UIImageView alloc] initWithImage:image]; CGRect rect = imageView.frame; rect.size.height = kScrollObjHeight; rect.size.width = kScrollObjWidth; imageView.frame = rect; imageView.tag = page; imageView.transform = CGAffineTransformMakeScale(1, -1); [scroller addSubview:imageView]; [imageView release]; [self performSelectorOnMainThread:@selector(backgroundLoadFinished) withObject:nil waitUntilDone:NO]; [aPool release]; }
Решение задачи: «MacOS(Objective-C)ScrollView со страницами из буфера»
textual
Листинг программы
[scroller setPosition: /*bla bla bla*/]
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д