UIApplicationDidChangeStatusBarOrientationNotification 已弃用,有其他选择吗?

Mih*_*Oza 7 objective-c nsnotificationcenter ios13 xcode11

我已将应用程序目标更改为 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;
}
Run Code Online (Sandbox Code Playgroud)

请向我建议 ios 12 和 ios 13 的解决方案。

提前致谢。

Mah*_*san 5

虽然这是一个旧帖子,但我最近也遇到了这种情况。只需执行协议即可 UIContentContainer

@interface MyViewController : NSObject <UIContentContainer>
Run Code Online (Sandbox Code Playgroud)

并在实现中实现该方法,并在方法中添加调用您的函数。

@implementation MyViewController {
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
        [self onChangeStatusBarOrientationNotification];
    }
@end
Run Code Online (Sandbox Code Playgroud)

迅速

@interface MyViewController : NSObject <UIContentContainer>
Run Code Online (Sandbox Code Playgroud)

其他一些有用的检查:

if UIDevice.current.orientation.isLandscape {
    print("Landscape")
}
if UIDevice.current.orientation.isFlat {
    print("Flat")
} else {
    print("Portrait")
}
Run Code Online (Sandbox Code Playgroud)