Как увеличить изображение в полноэкранном режиме? - PullRequest
1 голос
/ 07 марта 2012

У меня есть пейджинг UIScrollView с изображениями.Я хочу реализовать анимированное масштабирование изображения в полноэкранный режим на каком-нибудь жесте.И еще одна анимация для увеличения изображения обратно в режим прокрутки.Как в приложении «Фотографии» на iPad или как видео в Safari.

Конечно, это не будет UIImageView.Это был бы некоторый класс-обёртка с изображением внутри.Основной вопрос - как представить полноэкранный режим.Это должен быть модальный вид или нет.

Любая помощь приветствуется.

Ответы [ 4 ]

6 голосов
/ 07 марта 2012

Проверка касания изображения если он маленький, конвертируйте в полный размер. если он большой, конвертируйте в маленький размер.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    if (isLarge) [self makeSmall];
    else [self makeFull];
}

- (void)makeFull {
    [[self superview] bringSubviewToFront:self];
    isLarge = YES;
    CGRect largeFrame = [self superview].bounds;
    original = self.frame;
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    [self setFrame:largeFrame];
    [internal setFrame:self.bounds];
    [UIView commitAnimations];

}
- (void)makeSmall {
    isLarge = NO;
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    [self setFrame:original];
    [internal setFrame:self.bounds];
    [UIView commitAnimations];

}
3 голосов
/ 18 сентября 2013

Я нашел решение, которое включает в себя как распознаватели жестов, так и анимированные переходы. Вы удаляете прокрутку и добавляете полноэкранное изображение. Затем измените это, чтобы вернуться к просмотру прокрутки.

Используйте рамку окна, чтобы определить размер для нового UIImage.

Типы распознавателей жестов можно настроить в соответствии с вашими потребностями!

-(void)viewDidLoad
{
    [super viewDidLoad];
    UITapGestureRecognizer *tapTwice = [[UITapGestureRecognizer alloc] initWithTarget:self  action:@selector(tapTwice:)];
    tapTwice.numberOfTapsRequired = 2;
    [self.imageView addGestureRecognizer:tapTwice];
}

- (void)tapOnce:(id)tapOnce {
    [UIView transitionWithView:self.view
                  duration:0.7
                   options:UIViewAnimationOptionTransitionCrossDissolve 
                animations:^ {
                    [self.fullScreenImage removeFromSuperview];
                }
                completion:nil];
}

- (void)tapTwice:(id)tapTwice {
    if(self.fullScreenImage == nil){
        self.fullScreenImage = [[UIImageView alloc] initWithFrame:self.view.window.frame];

        UITapGestureRecognizer *tapOnce = [[UITapGestureRecognizer alloc] initWithTarget:self  action:@selector(tapOnce:)];
        tapOnce.numberOfTapsRequired = 1;
        [tapOnce requireGestureRecognizerToFail:tapTwice];
        [self.fullScreenImage addGestureRecognizer:tapOnce];
        [self.fullScreenImage setUserInteractionEnabled:YES];

        //self.fullScreenImage = [load your image here]
    }

    [UIView transitionWithView:self.view.window
                      duration:0.7
                       options:UIViewAnimationOptionTransitionCrossDissolve 
                    animations:^ {
                        [self.view.window addSubview:self.fullScreenImage];
                    }
                    completion:nil];
}
2 голосов
/ 07 марта 2012

Загрузите этот образец для примера кода галереи изображений и пройдите его.Это определенно поможет вам понять, как реализовать вашу идею.

1 голос
/ 07 марта 2012

Как показано ниже, вы можете использовать для увеличения изображения.

UIView * viewForScroll;

UIImageView *imgviewForScroll;

UIScrollView *scrollToRead = [[UIScrollViewalloc]initWithFrame:CGRectMake(175, 5, 300, 311)];

scrollToRead.backgroundColor = [UIColordarkGrayColor];

scrollToRead.showsHorizontalScrollIndicator = YES;

scrollToRead.delegate = self;

[scrollToRead setContentSize:CGRectMake(0, 0, 300, 400).size];

scrollToRead.maximumZoomScale = 2;

scrollToRead.minimumZoomScale = 1;

[self.view addSubview:scrollToRead];  

[scrollToRead release]; 

viewForScroll = [[UIViewalloc]initWithFrame:CGRectMake(0,0,300,400)];

[scrollToRead addSubview:viewForScroll];

[viewForScroll release];

imgviewForScroll = [[UIImageViewalloc]initWithFrame:CGRectMake(0,0,300,400)];

imgviewForScroll.image = [UIImageimageWithContentsOfFile:[arrayComicContentobjectAtIndex:0]];

[viewForScroll addSubview:imgviewForScroll];

[imgviewForScroll release];

// ========= UIScrollView Методы делегирования

 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {


    return viewForScroll;
    }

Хотелось бы знать, еслиВам нужны дальнейшие разъяснения

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