Files
real-e-party-iOS/YuMi/Global/YUMIMacroUitls.h
edwinQQQ c0441f7853 refactor: 更新 EPProgressHUD 和 YUMIMacroUitls.h 以兼容 iOS 13+
主要变更:
1. 在 EPProgressHUD.swift 中引入 keyWindow 的兼容获取方法,替换原有的 UIApplication.shared.keyWindow 调用。
2. 在 YUMIMacroUitls.h 中添加状态栏高度和 keyWindow 的兼容宏定义,确保在 iOS 13+ 中正确获取相关窗口和状态栏信息。

此更新旨在提升代码的兼容性和稳定性,确保在新版本的 iOS 中正常运行。
2025-10-11 17:36:28 +08:00

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 */