UIApplicationDidChangeStatusBarOrientationNotification 已弃用,还有其他选择吗?
Posted
技术标签:
【中文标题】UIApplicationDidChangeStatusBarOrientationNotification 已弃用,还有其他选择吗?【英文标题】:UIApplicationDidChangeStatusBarOrientationNotification is deprecated, any alternative? 【发布时间】:2019-07-05 09:41:10 【问题描述】:我已将我的应用程序目标更改为 ios 13 以检查我的应用程序中已弃用的方法,我收到以下警告:
'UIApplicationDidChangeStatusBarOrientationNotification' 已弃用:首先在 iOS 13.0 中弃用 - 请改用 viewWillTransitionToSize:withTransitionCoordinator:。 这是我在项目中实现的代码。
- (instancetype)init
self = [super init];
if (self)
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onChangeStatusBarOrientationNotification:)
name:UIApplicationDidChangeStatusBarOrientationNotification
object:nil];
return self;
请向我推荐适用于 ios 12 和 ios 13 的解决方案。
提前致谢。
【问题讨论】:
实施viewWillTransitionToSize:withTransitionCoordinator:
并在onChangeStatusBarOrientationNotification:
那里做任何你想做的事?
能给我一个小演示吗?
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; [self onChangeStatusBarOrientationNotification:nil];
?
【参考方案1】:
虽然这是一个旧帖子,但我最近也遇到了这种情况。只需实现协议UIContentContainer
@interface MyViewController : NSObject <UIContentContainer>
并在实现中实现方法,并在方法内添加调用你的函数。
@implementation MyViewController
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
[self onChangeStatusBarOrientationNotification];
@end
【讨论】:
如果不是视图或者没有控制器的视图怎么办?此外,viewWillTransitionToSize
仅在控制器与 addChild
一起添加到另一个控制器时才被调用(并且仅添加控制器的视图是不够的)。 请参阅my answer。【参考方案2】:
尝试类似:
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(onChangeStatusBarOrientationNotification:)
name: UIDeviceOrientationDidChangeNotification
object: nil];
但请注意,它只是有效,我从不在下面调用:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
所以,也许它是默认启用的。
斯威夫特 5
NotificationCenter.default.addObserver(self,
selector: #selector(onLayoutChange),
name: UIDevice.orientationDidChangeNotification,
object: nil)
// ...
@objc public func onLayoutChange()
// Handle change here.
【讨论】:
以上是关于UIApplicationDidChangeStatusBarOrientationNotification 已弃用,还有其他选择吗?的主要内容,如果未能解决你的问题,请参考以下文章