iPad 屏幕向后倾斜一定角度时出现错误视图
Wrong View appearing when iPad screen is tipped back a certain angle
我的一个应用程序有一个问题,当我将应用程序安装到实际 iPad 上后才发现,在模拟器中无法看到。问题是当我将 iPad 保持在横向时,如果我将 iPad 倾斜回某个角度,iPad 将保持横向模式,但视图会切换到我的 portraitView,同时仍在横向模式。在我的代码中,我有一个名为 screenRotated() 的函数,它是 UIDeviceOrientationDidChangeNotification 的观察者。我的函数 screenRotated() 具有以下代码:
let interfaceOrientation: UIDeviceOrientation = UIDevice.currentDevice().orientation
if UIDeviceOrientationIsLandscape(interfaceOrientation) {
//does some stuff and then sets self.view = landscapeView
} else {
//does some stuff and then sets self.view = portraitView
}
如何防止我的应用程序在横向时进入错误的视图?
您的问题是您没有处理方向 UIDeviceOrientationFaceUp
和 UIDeviceOrietationFaceDown
的设备方向通知。这些既不是纵向也不是横向,当方向不是横向时,您的代码总是选择纵向。
因此,当您向后倾斜时,它的方向会朝上,您的代码会选择纵向,因为它不是横向的,而是朝上的。
因此添加代码来检测 faceup/down 并理想地保持上次设置的方向,直到您看到它实际上从纵向变为横向或相反。
以下应该有效:
if UIDeviceOrientationIsLandscape(interfaceOrientation) {
//does some stuff and then sets self.view = landscapeView
} else if UIDeviceOrientationIsPortrait(interfaceOrientation) {
//does some stuff and then sets self.view = portraitView
}
else{
// Do nothing
}
我的一个应用程序有一个问题,当我将应用程序安装到实际 iPad 上后才发现,在模拟器中无法看到。问题是当我将 iPad 保持在横向时,如果我将 iPad 倾斜回某个角度,iPad 将保持横向模式,但视图会切换到我的 portraitView,同时仍在横向模式。在我的代码中,我有一个名为 screenRotated() 的函数,它是 UIDeviceOrientationDidChangeNotification 的观察者。我的函数 screenRotated() 具有以下代码:
let interfaceOrientation: UIDeviceOrientation = UIDevice.currentDevice().orientation
if UIDeviceOrientationIsLandscape(interfaceOrientation) {
//does some stuff and then sets self.view = landscapeView
} else {
//does some stuff and then sets self.view = portraitView
}
如何防止我的应用程序在横向时进入错误的视图?
您的问题是您没有处理方向 UIDeviceOrientationFaceUp
和 UIDeviceOrietationFaceDown
的设备方向通知。这些既不是纵向也不是横向,当方向不是横向时,您的代码总是选择纵向。
因此,当您向后倾斜时,它的方向会朝上,您的代码会选择纵向,因为它不是横向的,而是朝上的。
因此添加代码来检测 faceup/down 并理想地保持上次设置的方向,直到您看到它实际上从纵向变为横向或相反。
以下应该有效:
if UIDeviceOrientationIsLandscape(interfaceOrientation) {
//does some stuff and then sets self.view = landscapeView
} else if UIDeviceOrientationIsPortrait(interfaceOrientation) {
//does some stuff and then sets self.view = portraitView
}
else{
// Do nothing
}