脫離iOS及原生開發(fā)許久, 去年做了幾個(gè)月C#后換了家公司開始學(xué)習(xí)和寫RN, 如今Xcode和iOS新系統(tǒng)紛紛來襲, 最近剛剛裝了個(gè)beta版本Xcode
新建了工程, 剛開始看目錄還以為自己選錯(cuò)了什么, 最后確認(rèn)不是操作問題, 而是Xcode 11的新增變化, 對比了下AppDelegate
, 初步來看是將原AppDelegate
中的生命周期方法提取出去了, 加點(diǎn)log
再看看
2019-06-21 20:18:26.054548+0800 InstallSource[23928:2286459] -[AppDelegate application:didFinishLaunchingWithOptions:]
2019-06-21 20:18:26.081472+0800 InstallSource[23928:2286459] -[SceneDelegate scene:willConnectToSession:options:]
2019-06-21 20:18:26.081895+0800 InstallSource[23928:2286459] -[SceneDelegate sceneWillEnterForeground:]
2019-06-21 20:18:26.082075+0800 InstallSource[23928:2286459] -[SceneDelegate sceneDidBecomeActive:]
2019-06-21 20:18:26.092754+0800 InstallSource[23928:2286459] -[AppDelegate application:didDiscardSceneSessions:]
2019-06-21 20:18:26.096867+0800 InstallSource[23928:2286459] -[AppDelegate application:configurationForConnectingSceneSession:options:]
2019-06-21 20:19:04.214283+0800 InstallSource[23928:2286459] -[SceneDelegate sceneWillResignActive:]
2019-06-21 20:19:10.384895+0800 InstallSource[23928:2286459] -[SceneDelegate sceneDidEnterBackground:]
2019-06-21 20:19:13.947999+0800 InstallSource[23928:2286459] -[SceneDelegate sceneWillEnterForeground:]
2019-06-21 20:19:14.240884+0800 InstallSource[23928:2286459] -[SceneDelegate sceneDidBecomeActive:]
然而這個(gè)DiscardScene
...Discard
的又是什么鬼...,又在log
中加上了scene
, 打印沒發(fā)現(xiàn)什么明顯區(qū)別, 看樣子還得找資料詳細(xì)看看
window
新增屬性windowScene
- 獲取狀態(tài)欄高度
CGFloat statusBarHeight = 0;
if (@available(iOS 13.0, *)) {
statusBarHeight = [UIApplication sharedApplication].keyWindow.windowScene.statusBarManager.statusBarFrame.size.height;
} else {
// Fallback on earlier versions
statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;
}
- 獲取狀態(tài)欄朝向
if (@available(iOS 13.0, *)) {
_isPortrait = ![UIApplication sharedApplication].keyWindow.windowScene.interfaceOrientation;
} else {
// Fallback on earlier versions
_isPortrait = !UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation);
}
-
UIStatusBarManager.h
文件
#if (defined(USE_UIKIT_PUBLIC_HEADERS) && USE_UIKIT_PUBLIC_HEADERS) || !__has_include(<UIKitCore/UIStatusBarManager.h>)
//
// UIStatusBarManager.h
// UIKit
//
// Copyright ? 2018 Apple Inc. All rights reserved.
//
#import <UIKit/UIWindowScene.h>
NS_ASSUME_NONNULL_BEGIN
UIKIT_EXTERN API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos)
@interface UIStatusBarManager : NSObject
- (instancetype)init NS_UNAVAILABLE;
+ (instancetype)new NS_UNAVAILABLE;
@property (nonatomic, readonly) UIStatusBarStyle statusBarStyle;
@property (nonatomic, readonly, getter=isStatusBarHidden) BOOL statusBarHidden;
@property (nonatomic, readonly) CGRect statusBarFrame; // returns CGRectZero if the status bar is hidden
@end
@interface UIWindowScene (StatusBarManager)
@property (nonatomic, readonly, nullable) UIStatusBarManager *statusBarManager API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos);
@end
NS_ASSUME_NONNULL_END
#else
#import <UIKitCore/UIStatusBarManager.h>
#endif