MacOS(Objective-C)ScrollView со страницами из буфера - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, есть одна проблема: занимаюсь разработкой PDFViewer'a, надо реализвать чтобы, когда у скруллера pagesInBuffer - currentPage <= step, у нас: 1. подгружалось в конец буффера скруллера step страниц 2. удалялось из буфера step страниц 3. после currentPage было возможно просматривать старницы дальше. Я это реализовал, не немножко(множко?) неправильно. Нужна подсказка, где и что и как неправильно\неточно\etc. Код:
 - (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);
}
и ещё 2 метода непосредственно относящиеся к scrollview:
- (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];
}
Сначала scrollview листает кол-во страниц(pagesInBuffer) загруженных предварительно в буффер скрулла, когда доходит до момента удаления и добавления страниц, страницы добавляются в конец буффера и удаляются из его начала, но скрулл уже потом не скруллит, а так и остаётся на последней странице до добавления. P.S. спасибо. P.S.S. надеюсь обойтись без шапкозакидательства(что запостил тема насчёт objective-c в разделе С\С++), спросить просто не у кого и почти негде, естественно тема висит на других форумах, но к сожалению ответов ровно 0. Поэтому надеюсь на хотя бы какую-нибудь идею, подсказку, хоть что-то

Решение задачи: «MacOS(Objective-C)ScrollView со страницами из буфера»

textual
Листинг программы
[scroller setPosition: /*bla bla bla*/]

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы