我正在创建一个UIView的子类,当方向发生变化时需要重新发布其子视图。
它需要能够“插入任何地方”而无需任何额外的代码,所以我宁愿不依赖UIViewController方法来检测自转
UIView是否知道方向何时发生变化?
答案 0 :(得分:9)
这样的通知如何检测方向变化?
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];
但是,在此之前,您需要注册以生成这样的通知。
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
答案 1 :(得分:0)
我发现对我而言这比UIDeviceOrientationDidChangeNotification更好:
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("layoutControls"), name: UIApplicationDidChangeStatusBarOrientationNotification, object: nil)
我甚至不需要在beginGeneratingDeviceOrientationNotifications中添加第一行。
答案 2 :(得分:0)
在Swift中,它将像这样完成:
NotificationCenter.default.addObserver(self, selector: #selector(orientationChange(inNotification:)), name: NSNotification.Name.UIApplicationDidChangeStatusBarOrientation, object: nil)
@objc private func orientationChange(inNotification:Notification) -> Void {
// handle notification
}