解决这个问题需要 2 个部分。
第一个在此答案中进行了描述:
https :
//stackoverflow.com/a/8574519/1143123 描述了使用 viewWillAppear 方法而不是 viewDidLoad (之前称为边界值和“不正确”值)。这解决了在横向加载视图(并传播到后续旋转)时视图布局正确的问题。
第二部分是,如果我开始对其进行动画处理,然后同时进行旋转,视图仍然会变得混乱。我将动画类更改为仅移动中心坐标(而不是滑动框架),这本来会更好,但这并没有解决问题。最后,我在 ViewController 中为表现出这些问题的类硬编码了以下内容:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
[super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
// The container view should match the size of the current view
gameView.frame = self.view.bounds;
CGFloat width = self.view.bounds.size.width;
if(roundInProgress) {
gameView.jawsTop.frame = CGRectMake(0, 0, width, self.view.bounds.size.height/2);
gameView.jawsBottom.frame = CGRectMake(0, self.view.bounds.size.height/2, width, self.view.bounds.size.height/2);
} else {
// If round not in progress, game cards should be offscreen
CGFloat height = self.view.bounds.size.height/2;
gameView.jawsTop.frame = CGRectMake(0, -height, width, height);
gameView.jawsBottom.frame = CGRectMake(0, self.view.bounds.size.height, width, height);
}
}