Skip to content

Commit 88a89da

Browse files
committed
get current window
1 parent 58aa4dc commit 88a89da

File tree

2 files changed

+39
-3
lines changed

2 files changed

+39
-3
lines changed

ZDToolBoxObjC/Classes/ZDTools/ZDFunction.h

+5
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,13 @@ FOUNDATION_EXPORT BOOL ZD_iPhone4s(void);
188188
FOUNDATION_EXPORT BOOL ZD_iPhone5s(void);
189189
FOUNDATION_EXPORT BOOL ZD_iPhone6(void);
190190
FOUNDATION_EXPORT BOOL ZD_iPhone6p(void);
191+
192+
/// 是否是刘海机型
191193
FOUNDATION_EXPORT BOOL ZD_iPhoneX(void);
192194

195+
/// 获取当前的window
196+
FOUNDATION_EXPORT UIWindow * _Nullable ZD_CurrentWindow(void);
197+
193198
/// 获取 app 的 icon 图标名称
194199
FOUNDATION_EXPORT NSString *ZD_IconName(void);
195200
FOUNDATION_EXPORT NSString *ZD_LaunchImageName(void);

ZDToolBoxObjC/Classes/ZDTools/ZDFunction.m

+34-3
Original file line numberDiff line numberDiff line change
@@ -1045,7 +1045,7 @@ BOOL ZD_isJailbroken(void) {
10451045
// 当前设备是否设置了代理
10461046
BOOL ZD_isSetProxy(void) {
10471047
NSDictionary *proxySettings = (__bridge NSDictionary *)(CFNetworkCopySystemProxySettings());
1048-
NSArray *proxies = (__bridge NSArray *)(CFNetworkCopyProxiesForURL((__bridge CFURLRef _Nonnull)([NSURL URLWithString:@"http://www.baidu.com"]), (__bridge CFDictionaryRef _Nonnull)(proxySettings)));
1048+
NSArray *proxies = (__bridge NSArray *)(CFNetworkCopyProxiesForURL((__bridge CFURLRef _Nonnull)([NSURL URLWithString:@"https://www.baidu.com"]), (__bridge CFDictionaryRef _Nonnull)(proxySettings)));
10491049

10501050
NSDictionary *settings = proxies.firstObject;
10511051
return ![[settings objectForKey:(NSString *)kCFProxyTypeKey] isEqualToString:(NSString *)kCFProxyTypeNone];
@@ -1141,12 +1141,43 @@ BOOL ZD_iPhone6p(void) {
11411141
横屏尺寸:2436px × 1125px(812pt × 375pt @3x)
11421142
*/
11431143
BOOL ZD_iPhoneX(void) {
1144-
if (ZD_PrivateScreenSize().height == 812) {
1145-
return YES;
1144+
if (@available(iOS 11.0, *)) {
1145+
UIWindow *window = ZD_CurrentWindow() ?: UIWindow.new;
1146+
return window.safeAreaInsets.top > 0;
11461147
}
11471148
return NO;
11481149
}
11491150

1151+
UIWindow * _Nullable ZD_CurrentWindow(void) {
1152+
UIApplication *application = UIApplication.sharedApplication;
1153+
UIWindow *delegateWindow = application.delegate.window;
1154+
if (delegateWindow) {
1155+
return delegateWindow;
1156+
}
1157+
1158+
if (@available(iOS 13.0, *)) {
1159+
for (UIScene *scene in application.connectedScenes) {
1160+
id<UIWindowSceneDelegate> delegate = (id)scene.delegate;
1161+
if (![delegate respondsToSelector:@selector(window)]) {
1162+
continue;
1163+
}
1164+
UIWindow *win = delegate.window;
1165+
if (win) {
1166+
return win;
1167+
}
1168+
}
1169+
UIWindow *mainWindow = application.windows.firstObject;
1170+
return mainWindow;
1171+
}
1172+
else {
1173+
#pragma clang diagnostic push
1174+
#pragma clang diagnostic ignored"-Wdeprecated-declarations"
1175+
UIWindow *keyWindow = application.keyWindow;
1176+
#pragma clang diagnostic pop
1177+
return keyWindow;
1178+
}
1179+
}
1180+
11501181
// refer: http://www.cnblogs.com/tandaxia/p/5820217.html
11511182
/// 获取 app 的 icon 图标名称
11521183
NSString *ZD_IconName(void) {

0 commit comments

Comments
 (0)