我在弄清楚如何更新计算器视图控制器中的拐角半径时遇到了麻烦(请参阅本文结尾处的链接中的图像)。我正在使用viewWillLayoutSubviews()设置拐角半径,到目前为止,它一直工作得很好。但是,我注意到,如果我离开计算器视图控制器屏幕,旋转设备,然后导航回到计算器视图控制器屏幕,则拐角半径仍然基于先前的方向屏幕。我曾试过在viewDidAppear()内调用viewWillLayoutSubviews(),但是在正确设置按钮角半径之前有明显的延迟。
如何知道在设备库或其他视图控制器中时设备方向是否发生了变化?导航回计算器屏幕时,我需要能够加载圆形按钮。谢谢您的宝贵时间,我很感谢大家提供的所有信息。谢谢您的时间!
答案 0 :(得分:1)
您可以在viewdidLoad中这样做,在下面添加代码以检查设备方向
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter]
addObserver:self selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification
object:[UIDevice currentDevice]];
现在每次在到达时检查设备方向并根据下面的代码重新加载视图
- (void) orientationChanged:(NSNotification *)note { }
答案 1 :(得分:0)
将此代码添加到您的应用程序委托中。因此,您知道设备在全局上是横向还是纵向。然后,您可以使用Viewwill来更改半径。
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var didRotate: (Notification) -> Void = { notification in
switch UIDevice.current.orientation {
case .landscapeLeft, .landscapeRight:
print("landscape")
case .portrait, .portraitUpsideDown:
print("Portrait")
default:
print("other")
}
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
NotificationCenter.default.addObserver(forName: UIDevice.orientationDidChangeNotification,
object: nil,
queue: .main,
using: didRotate)
return true
}
}