Transformasi iOS dan animasi bingkai

Saya ingin mengubah bingkai tampilan menjadi batas layar penuh dan mengubahnya menjadi lanskap.

Saya menggunakan bingkai perubahan animasi UIView dan transformasi tampilan.

- (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) {

  }];
}

Saya mengharapkan tampilan diputar ke lanskap dan layar penuh, tetapi sepertinya ada kesalahan rotasi. masukkan deskripsi gambar di sini


person jacinzhang    schedule 22.08.2019    source sumber
comment
jangan mengubah bingkai, melainkan gunakan batasan Tata Letak Otomatis   -  person Sheshnath    schedule 23.08.2019
comment
Saya menemukan, tidak dapat memodifikasi trasnform dan frame secara bersamaan, jika saya hanya memodifikasi frame atau transform, itu berfungsi dengan baik.   -  person jacinzhang    schedule 23.08.2019


Jawaban (1)


Akhirnya saya mencobanya, jawabannya jangan tukar width dan height, seperti di bawah ini:

- (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