
主要变更: 1. 在 EPProgressHUD.swift 中引入 keyWindow 的兼容获取方法,替换原有的 UIApplication.shared.keyWindow 调用。 2. 在 YUMIMacroUitls.h 中添加状态栏高度和 keyWindow 的兼容宏定义,确保在 iOS 13+ 中正确获取相关窗口和状态栏信息。 此更新旨在提升代码的兼容性和稳定性,确保在新版本的 iOS 中正常运行。
117 lines
4.2 KiB
Objective-C
117 lines
4.2 KiB
Objective-C
//
|
|
// YMMacro.h
|
|
// YUMI
|
|
//
|
|
// Created by YUMI on 2021/9/10.
|
|
//
|
|
///一些宏
|
|
#import <Foundation/Foundation.h>
|
|
#import "../Tools/Bundle/NSBundle+Localizable.h"
|
|
|
|
#ifndef YUMIMacroUitls_h
|
|
#define YUMIMacroUitls_h
|
|
|
|
#import "../Tools/Bundle/YMLanguageConfig.h"
|
|
|
|
//iPhoneX系列设备(刘海屏设备)
|
|
#define iPhoneXSeries \
|
|
({BOOL isPhoneXSeries = NO;\
|
|
if (@available(iOS 11.0, *)) {\
|
|
isPhoneXSeries = [[UIApplication sharedApplication] delegate].window.safeAreaInsets.bottom > 0.0;\
|
|
}\
|
|
(isPhoneXSeries);})
|
|
|
|
#define KScreenWidth [[UIScreen mainScreen] bounds].size.width
|
|
#define KScreenHeight [[UIScreen mainScreen] bounds].size.height
|
|
|
|
// 兼容 iOS 13+ 的状态栏高度获取
|
|
#define statusbarHeight ({\
|
|
CGFloat height = 0;\
|
|
if (@available(iOS 13.0, *)) {\
|
|
UIWindowScene *windowScene = (UIWindowScene *)[[[UIApplication sharedApplication] connectedScenes] allObjects].firstObject;\
|
|
height = windowScene.statusBarManager.statusBarFrame.size.height;\
|
|
} else {\
|
|
height = [[UIApplication sharedApplication] statusBarFrame].size.height;\
|
|
}\
|
|
height;\
|
|
})
|
|
|
|
#define kStatusBarHeight statusbarHeight
|
|
#define kSafeAreaBottomHeight (iPhoneXSeries ? 34 : 0)
|
|
#define kSafeAreaTopHeight (iPhoneXSeries ? 24 : 0)
|
|
#define kNavigationHeight (kStatusBarHeight + 44)
|
|
#define kTabBarHeight (iPhoneXSeries ? 49.0+34.0 : 49.0)
|
|
#define kScreenScale ((CGFloat)KScreenWidth / (CGFloat)375)
|
|
#define kScreenHeightScale ((CGFloat)KScreenHeight / (CGFloat)812)
|
|
#define kHalfScreenHeight KScreenHeight * 0.65
|
|
#define kGetScaleWidth(width) kRoundValue(width)
|
|
#define kRoundValue(value) round(kScreenScale * value)
|
|
#define kWeakify(o) try{}@finally{} __weak typeof(o) o##Weak = o;
|
|
#define kStrongify(o) autoreleasepool{} __strong typeof(o) o = o##Weak;
|
|
|
|
// 兼容 iOS 13+ 的 keyWindow 获取
|
|
#define kWindow ({\
|
|
UIWindow *window = nil;\
|
|
if (@available(iOS 13.0, *)) {\
|
|
for (UIWindowScene *scene in [UIApplication sharedApplication].connectedScenes) {\
|
|
if (scene.activationState == UISceneActivationStateForegroundActive) {\
|
|
for (UIWindow *w in scene.windows) {\
|
|
if (w.isKeyWindow) {\
|
|
window = w;\
|
|
break;\
|
|
}\
|
|
}\
|
|
if (window) break;\
|
|
}\
|
|
}\
|
|
} else {\
|
|
window = [UIApplication sharedApplication].keyWindow;\
|
|
}\
|
|
window;\
|
|
})
|
|
|
|
#define kImage(image) [UIImage imageNamed:image]
|
|
|
|
///UIFont
|
|
#define kFontLight(font) [UIFont systemFontOfSize:kGetScaleWidth(font) weight:UIFontWeightLight]
|
|
#define kFontRegular(font) [UIFont systemFontOfSize:kGetScaleWidth(font) weight:UIFontWeightRegular]
|
|
#define kFontMedium(font) [UIFont systemFontOfSize:kGetScaleWidth(font) weight:UIFontWeightMedium]
|
|
#define kFontSemibold(font) [UIFont systemFontOfSize:kGetScaleWidth(font) weight:UIFontWeightSemibold]
|
|
#define kFontBold(font) [UIFont systemFontOfSize:kGetScaleWidth(font) weight:UIFontWeightBold]
|
|
#define kFontHeavy(font) [UIFont systemFontOfSize:kGetScaleWidth(font) weight:UIFontWeightHeavy]
|
|
|
|
///内置版本号
|
|
#define PI_App_Version @"1.0.31"
|
|
///渠道
|
|
#define PI_App_Source @"appstore"
|
|
#define PI_Test_Flight @"TestFlight"
|
|
#define ISTestFlight 0
|
|
///正式环境
|
|
#define API_HOST_URL @"https://api.hfighting.com"
|
|
///测试环境
|
|
#define API_HOST_TEST_URL @"http://beta.api.pekolive.com" // http://beta.api.pekolive.com | http://beta.api.molistar.xyz
|
|
|
|
#define API_Image_URL @"https://image.hfighting.com"
|
|
|
|
#define YMLocalizedString(key) \
|
|
[NSBundle ymLocalizedStringForKey:(key)]
|
|
|
|
#define isMSRTL() [YMLanguageConfig isRTLanguage:[NSBundle getLanguageText]]
|
|
///是否是中文
|
|
#define isMSZH() [[NSBundle getLanguageText] hasPrefix:@"zh"]
|
|
///是否是英文
|
|
#define isMSEN() [[NSBundle getLanguageText] hasPrefix:@"en"]
|
|
///是否土耳其语
|
|
#define isMSTR() [[NSBundle getLanguageText] hasPrefix:@"tr"]
|
|
///是否葡萄牙语
|
|
#define isMSPT() [[NSBundle getLanguageText] hasPrefix:@"pt"]
|
|
///是否西班牙语
|
|
#define isMSES() [[NSBundle getLanguageText] hasPrefix:@"es"]
|
|
///是否俄语
|
|
#define isMSRU() [[NSBundle getLanguageText] hasPrefix:@"ru"]
|
|
///是否乌兹别克语
|
|
#define isMSUZ() [[NSBundle getLanguageText] hasPrefix:@"uz"]
|
|
|
|
|
|
#endif /* YUMIMacroUitls_h */
|