R.P*_*son 6 orientation ios swift
我正在使用
let value = UIInterfaceOrientation.landscapeRight.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
Run Code Online (Sandbox Code Playgroud)
强制呈现视图控制器以横向显示.这是导航控制器流程的一部分.这可以按预期工作,但如果手机保持在横向并且标题在45到90度之间,则视图将以纵向显示.调用该方法并且预期值是正确的,但不会发生横向更改.这可以在带有导航控制器的裸骨项目中重现.
有谁知道可能导致这种行为的原因是什么?
我也遇到了这个奇怪的问题,当您将设备旋转到进入下一个视图控制器时想要更改的方向时,屏幕将保持纵向模式。我设法通过致电解决了这个问题
UINavigationController.attemptRotationToDeviceOrientation()
后
UIDevice.current.setValue(value, forKey: "orientation")
被称为。我想这只有在您使用UINavigationController.
你可以覆盖
func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?)
Run Code Online (Sandbox Code Playgroud)
如https://developer.apple.com/reference/uikit/uitraitenvironment/1623516-traitcollectiondidchange中所述
如
- (void) traitCollectionDidChange: (UITraitCollection *) previousTraitCollection {
[super traitCollectionDidChange: previousTraitCollection];
if ((self.traitCollection.verticalSizeClass != previousTraitCollection.verticalSizeClass)
|| (self.traitCollection.horizontalSizeClass != previousTraitCollection.horizontalSizeClass)) {
// your custom implementation here
}
}
Run Code Online (Sandbox Code Playgroud)
以根据需要保持您的方向。或者,在 XCode 中,单击您的目标,选择“常规”选项卡,然后仅选择一个允许的方向。