Как сделать еще раз нажать ImageView, чтобы уменьшить масштаб, когда он уже полноэкранный?

У меня есть просмотр изображений в одностраничном приложении, и я установил его на полноэкранный размер при нажатии на него, и это работает. Но я также хочу, чтобы он уменьшал свой первоначальный размер при нажатии на него в полноэкранном режиме. Как это сделать? Прямо сейчас, нажмите, чтобы сделать его полноэкранным, и тогда я ничего не могу, кроме как остановить работу. Вот мой код:

- (void)Enlarge:(id)sender{
    [ImageView setFrame:CGRectMake(0, 20, (460/1.5), 480-20)]; //enlarge to fullscreen but exclude the status bar.
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(Enlarge:)];
    tapGesture.numberOfTapsRequired = 1;
    tapGesture.cancelsTouchesInView = YES;
    [ImageView setUserInteractionEnabled:YES];
    [ImageView addGestureRecognizer:tapGesture];
    [tapGesture release];
}

Мой второй вопрос заключается в том, что у меня есть две раскадровки, контролируемые этим viewcontroller, одна для 3,5-дюймового экрана, а другая для 4-дюймового экрана. Я хочу, чтобы мое увеличение соответствовало обоим размерам экрана. Могут ли следующие изменения помочь? Потому что у меня нет iPhone5 для тестирования в данный момент.

- (void)Enlarge:(id)sender{
    CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

    if (iOSDeviceScreenSize.height == 480){
        [ImageView setFrame:CGRectMake(0, 20, (460/1.5), 480-20)];
    }
    if (iOSDeviceScreenSize.height == 568){
        [ImageView setFrame:CGRectMake(0, 20, (548/1.775), 568-20)];
    }

}

Большое спасибо!

1 ответ

Решение

Добавить переменную BOOL, чтобы отслеживать, является ли она полноэкранной.

в.h добавить недвижимость

@property (nonatomic, assign) BOOL isFullScreen;

@property (nonatomic, assign) CGRect originalRect;

в viewDidLoad добавьте эти строки,

self.isFullScreen = NO;
self.originalRect = CGRectMake(0,0,153,230);//replace this by the zoomed out rect size that you want

и в вашем увеличении:

- (void)Enlarge:(id)sender{

if(!self.isFullScreen){
[ImageView setFrame:CGRectMake(0, 20, (460/1.5), 480-20)]; //enlarge to fullscreen but exclude the status bar.
}else {
[ImageView setFrame:originalFrame];//
}
self.isFullScreen = !self.isFullScreen;
}

Что касается второго вопроса, да, это должно работать.

Другие вопросы по тегам