2012-04-11 2 views
2

Я пытаюсь дублировать приложение «Фотографии» на iPhone. Значение, scrollview с несколькими изображениями, и каждое изображение может быть зажато для увеличения/уменьшения масштаба.UIScrollview с несколькими изображениями и щепоткой для увеличения

Пример кода Apple ScrollViewSuite обрабатывает только 1 изображение внутри прокрутки. Я обнаружил, что с несколькими изображениями прокрутка изображений становится непредсказуемой. Кроме того, вид становится невредимым после зажима для увеличения.

Я искал stackoverflow и нашел this.

Однако, я хотел бы получить более подробную информацию, если это возможно. Что я должен написать в функции делегата scrollview?

Любая помощь (с примером кода, если возможно) была бы отличной.

Спасибо!

+1

Как насчет компании Apple [PhotoScroller] (http://www.google.co.in/url?sa=t&rct=j&q=photoscroller%20apple%20sample&source=web&cd=1&ved=0CCYQFjAA&url=http%3A%2F % 2Fdeveloper.apple.com% 2Flibrary% 2Fios% 2Fsamplecode% 2FPhotoScroller% 2FIntroduction% 2FIntro.html & ei = B0OFT7CzEY_SrQeJ2rXSBg & usg = AFQjCNHK6ZW1WphEOlE6XEu7OhfRJ7Zi1g) Применение? –

ответ

5

Это то, что я нашел для работы. Поддержка нескольких изображений с подкачкой и масштабированием. Наслаждайтесь!

#define VIEW_FOR_ZOOM_TAG (1) 

@implementation SVViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIScrollView *mainScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds]; 
    mainScrollView.pagingEnabled = YES; 
    mainScrollView.showsHorizontalScrollIndicator = NO; 
    mainScrollView.showsVerticalScrollIndicator = NO; 

    CGRect innerScrollFrame = mainScrollView.bounds; 

    for (NSInteger i = 0; i < 3; i++) { 
     UIImageView *imageForZooming = [[UIImageView alloc] initWithImage:[UIImage imageNamed: 
     [NSString stringWithFormat:@"page%d", i + 1]]]; 
     imageForZooming.tag = VIEW_FOR_ZOOM_TAG; 

     UIScrollView *pageScrollView = [[UIScrollView alloc] initWithFrame:innerScrollFrame]; 
     pageScrollView.minimumZoomScale = 1.0f; 
     pageScrollView.maximumZoomScale = 2.0f; 
     pageScrollView.zoomScale = 1.0f; 
     pageScrollView.contentSize = imageForZooming.bounds.size; 
     pageScrollView.delegate = self; 
     pageScrollView.showsHorizontalScrollIndicator = NO; 
     pageScrollView.showsVerticalScrollIndicator = NO; 
     [pageScrollView addSubview:imageForZooming]; 

     [mainScrollView addSubview:pageScrollView]; 

     if (i < 2) { 
      innerScrollFrame.origin.x += innerScrollFrame.size.width; 
     } 
    } 

    mainScrollView.contentSize = CGSizeMake(innerScrollFrame.origin.x + 
    innerScrollFrame.size.width, mainScrollView.bounds.size.height); 

    [self.view addSubview:mainScrollView]; 
} 

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 
    return [scrollView viewWithTag:VIEW_FOR_ZOOM_TAG]; 
} 

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (BOOL)shouldAutorotate { 
    return NO; 
} 

@end 
Смежные вопросы