PrefixHeader.pch 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. //
  2. // PrefixHeader.pch
  3. // DarkMode
  4. //
  5. // Created by wsl on 2019/11/5.
  6. // Copyright © 2019 https://github.com/wsl2ls/iOS_Tips.git All rights reserved.
  7. //
  8. #ifndef PrefixHeader_pch
  9. #define PrefixHeader_pch
  10. //如何安装:
  11. //1.创建新pch文件,默认名字即可: "PrefixHeader.pch".
  12. //2.点击下一步再去Build Settings 搜索Prefix Header.
  13. //3.找到Prefix Header并且双击,输入$(SRCROOT)/$(PROJECT_NAME)/PrefixHeader.pch
  14. //现在你可以在项目内任何文件调用宏定义了,祝一切顺利.
  15. #ifdef __OBJC__ // 只被object-c文件所引用
  16. // 这个定义全工程都可以调用,不用重复引入
  17. ///我的联系方式
  18. #define SL_JianShuUrl @"https://www.jianshu.com/u/e15d1f644bea"
  19. #define SL_GithubUrl @"https://github.com/wsl2ls/iOS_Tips.git"
  20. #define SL_WeChat @"iOS2679114653"
  21. #define SL_QQGroup @"835303405"
  22. #define SL_WeiBo @"https://weibo.com/5732733120/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1"
  23. #define SL_CSDN @"https://blog.csdn.net/wsl2ls"
  24. #define SL_JueJin @"https://juejin.im/user/5c00d97b6fb9a049fb436288"
  25. #define SL_Blog @"https://wsl2ls.github.io"
  26. //【腾讯文档】2020_慕课网/极客/腾讯课堂等课程资源:https://docs.qq.com/doc/DS1lhWkhPc2xEamx5
  27. //---------------------- About UI/Device ----------------------------
  28. #define iPhone4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)
  29. #define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
  30. #define iPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)
  31. #define iPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)
  32. #define iPhone6PlusScale ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2001), [[UIScreen mainScreen] currentMode].size) : NO)
  33. #define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
  34. #define iPhoneXR ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) : NO)
  35. #define iPhoneXM ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) : NO)
  36. #define SL_SafeAreaEnable ((iPhoneX || iPhoneXR || iPhoneXM) ? YES : NO)
  37. #define SL_TopSafeAreaHeight (SL_SafeAreaEnable ? 44.f : 20.f)
  38. #define SL_TopNavigationBarHeight (SL_SafeAreaEnable ? 88.f : 64.f)
  39. #define SL_BottomTabbarHeight (SL_SafeAreaEnable ? (49.f + 34.f) : (49.f))
  40. #define SL_BottomSafeAreaHeight (SL_SafeAreaEnable ? (34.f) : (0.f))
  41. /// 屏幕宽高
  42. #define SL_kScreenWidth [UIScreen mainScreen].bounds.size.width
  43. #define SL_kScreenHeight [UIScreen mainScreen].bounds.size.height
  44. /** 判断是否为iPhone */
  45. #define isiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
  46. /** 判断是否是iPad */
  47. #define isiPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
  48. /** 判断是否为iPod */
  49. #define isiPod ([[[UIDevice currentDevice] model] isEqualToString:@"iPod touch"])
  50. //Get the OS version. 判断操作系统版本
  51. #define SL_IOSVERSION [[[UIDevice currentDevice] systemVersion] floatValue]
  52. #define SL_CurrentSystemVersion ([[UIDevice currentDevice] systemVersion])
  53. #define SL_CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])
  54. //judge the simulator or hardware device 判断是真机还是模拟器
  55. #if TARGET_OS_IPHONE
  56. //iPhone Device
  57. #endif
  58. #if TARGET_IPHONE_SIMULATOR
  59. //iPhone Simulator
  60. #endif
  61. //---------------------- About Helper 辅助方法 ----------------------------
  62. /// 弱引用对象
  63. #define SL_WeakSelf __weak typeof(self) weakSelf = self;
  64. ///主线程操作
  65. #define SL_DISPATCH_ON_MAIN_THREAD(mainQueueBlock) dispatch_async(dispatch_get_main_queue(),mainQueueBlock);
  66. #define SL_GCDWithGlobal(block) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block)
  67. #define sl_GCDWithMain(block) dispatch_async(dispatch_get_main_queue(),block)
  68. ///NSUserDefaults 存储
  69. #define SL_UserDefaultSetObjectForKey(__VALUE__,__KEY__) \
  70. {\
  71. [[NSUserDefaults standardUserDefaults] setObject:__VALUE__ forKey:__KEY__];\
  72. [[NSUserDefaults standardUserDefaults] synchronize];\
  73. }
  74. ///NSUserDefaults 获得存储的对象
  75. #define SL_UserDefaultObjectForKey(__KEY__) [[NSUserDefaults standardUserDefaults] objectForKey:__KEY__]
  76. ///NSUserDefaults 删除对象
  77. #define SL_UserDefaultRemoveObjectForKey(__KEY__) \
  78. {\
  79. [[NSUserDefaults standardUserDefaults] removeObjectForKey:__KEY__];\
  80. [[NSUserDefaults standardUserDefaults] synchronize];\
  81. }
  82. /** 快速查询一段代码的执行时间 */
  83. /** 用法
  84. SL_StartTime
  85. do your work here
  86. SL_EndDuration
  87. */
  88. #define SL_StartTime NSDate *startTime = [NSDate date]
  89. #define SL_EndDuration -[startTime timeIntervalSinceNow]
  90. // STRING容错机制
  91. #define SL_IS_NULL(x) (!x || [x isKindOfClass:[NSNull class]])
  92. #define SL_IS_EMPTY_STRING(x) (SL_IS_NULL(x) || [x isEqual:@""] || [x isEqual:@"(null)"])
  93. #define SL_DEFUSE_EMPTY_STRING(x) (!SL_IS_EMPTY_STRING(x) ? x : @"")
  94. //沙河目录
  95. ///获取沙盒主目录路径
  96. #define SL_HomeDir NSHomeDirectory();
  97. /// 获取Documents目录路径
  98. #define SL_DocumentDir [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]
  99. /// 获取Library的目录路径
  100. #define SL_LibraryDir [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject]
  101. /// 获取Caches目录路径
  102. #define SL_CachesDir [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]
  103. /// 获取tmp目录路径
  104. #define SL_TmpDir NSTemporaryDirectory()
  105. //---------------------- About Color 颜色 ----------------------------
  106. /// 随机颜色
  107. #define SL_UIColorFromRandomColor [UIColor colorWithRed:arc4random()%255/255.0 green:arc4random()%255/255.0 blue:arc4random()%255/255.0 alpha:1.0]
  108. /// rgb颜色
  109. #define SL_UIColorFromRGB(r,g,b,a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)]
  110. /// 16进制 颜色
  111. #define SL_UIColorFromHex(rgbValue, a) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:(a)]
  112. //---------------------- About Log 打印日志 ----------------------------
  113. /// 打印
  114. #ifdef DEBUG
  115. # define NSLog(fmt, ...) NSLog((fmt), ##__VA_ARGS__);
  116. # define SL_Log(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
  117. #define SL_NSLog(...) printf("%f %s %ld :%s\n",[[NSDate date]timeIntervalSince1970],strrchr(__FILE__,'/'),[[NSNumber numberWithInt:__LINE__] integerValue],[[NSString stringWithFormat:__VA_ARGS__]UTF8String]);
  118. #else
  119. # define NSLog(fmt, ...)
  120. # define SL_Log(...)
  121. # define SL_NSLog(...)
  122. #endif
  123. //---------------------- About Shader 着色器 ----------------------------
  124. //#x 将参数x字符串化
  125. #define STRINGIZE(x) #x
  126. #define STRINGIZE2(x) STRINGIZE(x)
  127. #define Shader_String(text) @ STRINGIZE2(text)
  128. #import "UIView+SLFrame.h"
  129. #import "SLDelayPerform.h"
  130. #import "SLAlertView.h"
  131. #import "Masonry.h"
  132. #import "SLMethod.h"
  133. #import "SLViewController.h"
  134. #endif
  135. #endif /* PrefixHeader_pch */