呈现的 UIViewController 拒绝横向布局
Presented UIViewController refuses to lay out with landscape orientation
我正在更新一个有 5 年历史的应用程序(最初是为 iOS 3 编写的!)。我在使用自动布局和解决弃用警告方面取得了不错的进展。但是当设备旋转时用于呈现不同视图控制器的旧技术不再可靠地工作。
- (void)orientationChanged:(NSNotification *)notification {
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
if (deviceOrientation == UIInterfaceOrientationLandscapeRight && !showingOtherVC) {
// switch to other VC
othervc.modalPresentationStyle = UIModalPresentationOverFullScreen;
[self presentViewController:othervc animated:YES completion:nil];
[self resignFirstResponder];
}
另一个视图控制器确实出现了,但它是横向放置的,对于纵向屏幕,而不是横向屏幕,即使设备是横向的。
我怎样才能以一种相当简单的方式更新它(即,不是在 Swift 中重写,而不是用故事板重构应用程序——Xcode 似乎无法通过 copy/paste)?而且,为了可能遇到这个问题的其他人的利益,如果我从头开始写这个,那么实现这个结果的更正确的方法是什么(关于方向变化的新 VC)?
谢谢。
这是一个非常愚蠢的错误,但如果其他人犯了错误并最终出现在这里,这就是问题所在。
而不是正确返回掩码常量:
-(UIInterfaceOrientationMask)supportedInterfaceOrientations {
return (UIInterfaceOrientationMaskLandscapeRight);
}
我正在返回自动完成给我的另一个常量:
-(UIInterfaceOrientationMask)supportedInterfaceOrientations {
return (UIInterfaceOrientationLandscapeRight);
}
我正在更新一个有 5 年历史的应用程序(最初是为 iOS 3 编写的!)。我在使用自动布局和解决弃用警告方面取得了不错的进展。但是当设备旋转时用于呈现不同视图控制器的旧技术不再可靠地工作。
- (void)orientationChanged:(NSNotification *)notification {
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
if (deviceOrientation == UIInterfaceOrientationLandscapeRight && !showingOtherVC) {
// switch to other VC
othervc.modalPresentationStyle = UIModalPresentationOverFullScreen;
[self presentViewController:othervc animated:YES completion:nil];
[self resignFirstResponder];
}
另一个视图控制器确实出现了,但它是横向放置的,对于纵向屏幕,而不是横向屏幕,即使设备是横向的。
我怎样才能以一种相当简单的方式更新它(即,不是在 Swift 中重写,而不是用故事板重构应用程序——Xcode 似乎无法通过 copy/paste)?而且,为了可能遇到这个问题的其他人的利益,如果我从头开始写这个,那么实现这个结果的更正确的方法是什么(关于方向变化的新 VC)?
谢谢。
这是一个非常愚蠢的错误,但如果其他人犯了错误并最终出现在这里,这就是问题所在。
而不是正确返回掩码常量:
-(UIInterfaceOrientationMask)supportedInterfaceOrientations {
return (UIInterfaceOrientationMaskLandscapeRight);
}
我正在返回自动完成给我的另一个常量:
-(UIInterfaceOrientationMask)supportedInterfaceOrientations {
return (UIInterfaceOrientationLandscapeRight);
}