5

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

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

无论如何,UIView 是否知道方向何时改变?

4

3 回答 3

9

像这样的通知来检测方向变化怎么样?

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil]; 

但是,在此之前,您需要注册以生成这样的通知。

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
于 2013-08-26T10:26:35.053 回答
0

我发现对我来说这比 UIDeviceOrientationDidChangeNotification 效果更好:

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("layoutControls"), name: UIApplicationDidChangeStatusBarOrientationNotification, object: nil)

我什至不需要使用 beginGeneratingDeviceOrientationNotifications 添加第一行。

于 2015-11-23T10:44:59.487 回答
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
 }
于 2018-12-08T17:50:48.477 回答