Преобразование iOS и кадровая анимация

Я хочу изменить рамку просмотра на полноэкранные границы и преобразовать в ландшафт.

Я использовал кадр изменения анимации UIView и преобразование вида.

- (void)enterFullScreen {
  CGRect frame = CGRectMake(0, 0, CGRectGetHeight(UIScreen.mainScreen.bounds), CGRectGetWidth(UIScreen.mainScreen.bounds));
  self.originFrame = self.presentView.frame;
  [UIView animateWithDuration:ZXYAnimationDuration animations:^{
    self.presentView.transform = CGAffineTransformMakeRotation(M_PI_2);
    self.presentView.frame = frame;
  } completion:^(BOOL finished) {

  }];
}

- (void)exitFullScreen {
  [UIView animateWithDuration:ZXYAnimationDuration animations:^{
    self.presentView.transform = CGAffineTransformIdentity;
    self.presentView.frame = self.originFrame;
  } completion:^(BOOL finished) {

  }];
}

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


person jacinzhang    schedule 22.08.2019    source источник
comment
не изменяйте кадр, вместо этого используйте ограничения Autolayout   -  person Sheshnath    schedule 23.08.2019
comment
Я обнаружил, что не могу одновременно изменять trasnform и кадр, если я только изменяю кадр или преобразование, это работает хорошо.   -  person jacinzhang    schedule 23.08.2019


Ответы (1)


Наконец, я попробовал, ответ таков: не меняйте ширину и высоту, как показано ниже:

- (void)enterFullScreen {
  CGRect frame = CGRectMake(0, 0, CGRectGetWidth(UIScreen.mainScreen.bounds), CGRectGetHeight(UIScreen.mainScreen.bounds));
  self.originFrame = self.presentView.frame;
  [UIView animateWithDuration:ZXYAnimationDuration animations:^{
    self.presentView.transform = CGAffineTransformMakeRotation(M_PI_2);
    self.presentView.frame = frame;
  } completion:^(BOOL finished) {

  }];
}

- (void)exitFullScreen {
  [UIView animateWithDuration:ZXYAnimationDuration animations:^{
    self.presentView.transform = CGAffineTransformIdentity;
    self.presentView.frame = self.originFrame;
  } completion:^(BOOL finished) {

  }];
}
person jacinzhang    schedule 04.09.2019