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*/]