Масштаб UIScrollView с несколькими изображениями - PullRequest
2 голосов
/ 04 марта 2010

У меня есть UIScrollFrame, который содержит несколько UIImageViews.

Как правильно поддерживать увеличение в таком элементе управления?

Какое представление должно возвращать viewForZoomingInScrollView?

Ответы [ 3 ]

1 голос
/ 04 марта 2010

Я наконец-то реализовал это, поместив представление прокрутки в представление прокрутки. Таким образом, внутренний вид обрабатывает перелистывание страниц, а внешний - масштабирование.

0 голосов
/ 28 июля 2015

Просто поместите вид прокрутки в другой.

Вот так:

    -(void)zoomToSelectedImage:(NSIndexPath *)indexPath
    {

      int currentPage = indexPath.row;

    //The External Scrollview. It move back and forward
      UIScrollView *contentViewZoom = [[UIScrollView alloc] initWithFrame:self.frame];
      [contentViewZoom setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.8]];
      [contentViewZoom setContentSize:CGSizeMake(contentViewZoom.frame.size.width * [arrayOfImages count], contentViewZoom.frame.size.height)];
      [contentViewZoom setPagingEnabled:YES];
      [contentViewZoom setDelegate:self];


      for (int i = 0; i < [arrayOfImages count]; i++) {
        CGRect frame;
        frame.origin.x = contentViewZoom.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = contentViewZoom.frame.size;

        //The Internal Scrollview. It allow you zoom the picture

        UIScrollView *imageScrollView = [[UIScrollView alloc]initWithFrame:frame];
        [imageScrollView setTag:1];
        [imageScrollView setMinimumZoomScale:1.0];
        [imageScrollView setMaximumZoomScale:3.0];
        [imageScrollView setAlpha:1];
        [imageScrollView setDelegate:self];
        [imageScrollView setBouncesZoom:YES];
        [imageScrollView setClipsToBounds:YES];
        [imageScrollView setShowsHorizontalScrollIndicator:NO];
        [imageScrollView setShowsVerticalScrollIndicator:NO];
        [imageScrollView setContentSize:CGSizeMake(768, 1024)];


        UIImage *image = [arrayOfImages objectAtIndex:i];
        UIImageView* imgView = [[UIImageView alloc] init];
        [imgView setImage:image];
        [imgView setFrame:CGRectMake(0, 0, 768, 1024)];
        imgView.bounds = self.bounds;
        [imgView setClipsToBounds:YES];
        [imgView setContentMode:UIViewContentModeScaleAspectFit];
        [imgView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];

        [imageScrollView addSubview:imgView];
        [contentViewZoom addSubview:imageScrollView];

      }


      [self addSubview:contentViewZoom];  
      [contentViewZoom setAlpha:0.2];


      //Positioning according to current position
      CGRect frame;
      frame.origin.x = contentViewZoom.frame.size.width * currentPage;
      frame.origin.y = 0;
      frame.size = contentViewZoom.frame.size;
      [contentViewZoom scrollRectToVisible:frame animated:NO];

    }

ОБС .: В моем случае размер экрана фиксированный (768x1024), вы должны изменить его по мере необходимости.

0 голосов
/ 04 марта 2010

У Apple есть действительно хороший образец кода, который включает UIScrollView, масштабирование и мозаику. Проверьте это на

http://developer.apple.com/iphone/library/samplecode/ScrollViewSuite/index.html

Этот код обсуждается в сеансе Scoll Views WWDC2009. Видео этой сессии, к сожалению, не доступно в свободном доступе, но вы можете купить его как часть видео пакета iPhone WWDC2009.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...