检测UIView子类内的自动旋转

时间:2013-08-26 07:32:54

标签: iphone ios uiview subclass autorotate

我正在创建一个UIView的子类,当方向发生变化时需要重新发布其子视图。

它需要能够“插入任何地方”而无需任何额外的代码,所以我宁愿不依赖UIViewController方法来检测自转

UIView是否知道方向何时发生变化?

3 个答案:

答案 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
 }