// // Copyright © 2017 dahua. All rights reserved. // #ifndef DHPubDefine_h #define DHPubDefine_h // 整型索引 typedef NSInteger Index; // 长整型索引 typedef int64_t LongIndex; /// Http类型 typedef NS_ENUM(NSInteger,DHServerPortType) { DHServerPortTypeHttp = 80, //http 交互方式 DHServerPortTypeHttps = 443 //https 交互方式 }; //Mark::NVR,增加通道 typedef NS_ENUM(NSInteger, DeviceCatalog) { DeviceCatalogCamera, //摄像头 DeviceCatalogBox, //盒子 DeviceCatalogBoxPart, //盒子配件 DeviceCatalogNVR, //NVR设备 DeviceCatalogNVRChannel, //NVR设备通道 DeviceCatalogG1, //报警网关 DeviceCatalogG1Part //报警网关配件 }; typedef NS_ENUM(NSInteger, DHChannelListType) { DHChannelListTypeCoverFlow, DHChannelListTypeList, DHChannelListTypeRecord } ; typedef NS_ENUM(NSInteger, SDCardStatus) { SDCardStatusException = 0,// sd卡异常 SDCardStatusNormal = 1,// sd卡正常 SDCardStatusNoCard = 2,// 没有sd卡 SDCardStatusFormatting = 3,// 正在初始化 SDCardStatusError = 4 // 不存在 }; //针对公有云消息 typedef NS_ENUM(NSInteger, HlsStatus) { HlsStatusDownloadFail, //下载失败 HlsStatusDownloadBegin, //开始下载 HlsStatusDownloadEnd, //下载结束 HlsStatusSeekSuccess, //定位成功 HlsStatusSeekFail, //定位失败 HlsStatusAbortDone, // HlsStatusResumeDone, // HlsStatusKeyError = 11, //密码不匹配 }; // 加载状态 typedef NS_ENUM(NSInteger, DHLoadingStatus) { DHLoadingStatusUnknown, // 未知 DHLoadingStatusLoading, // 加载中 DHLoadingStatusSuccess, // 加载成功 DHLoadingStatusFail, // 加载失败 }; #pragma mark- 公用宏 #define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width #define SCREEN_HEIGHT [[UIScreen mainScreen] bounds].size.height // 屏幕宽度 #define DH_SCREEN_SIZE_WIDTH MIN([[UIScreen mainScreen]bounds].size.width, [[UIScreen mainScreen]bounds].size.height) // 屏幕高度 #define DH_SCREEN_SIZE_HEIGHT MAX([[UIScreen mainScreen]bounds].size.width, [[UIScreen mainScreen]bounds].size.height) // 状态栏高度 #define DH_StatusBarHeight ([UIApplication sharedApplication].statusBarFrame.size.height) // 导航栏高度 #define DHL_NavigationBarHeight 44.f // Tabbar高度 #define DH_TabbarHeight (DH_IS_IPHONEX ? (49.f+34.f) : 49.f) // 导航栏加状态栏高度 #define DH_StatusBarAndNavigationBarHeight (44.f + [UIApplication sharedApplication].statusBarFrame.size.height) // 安全区域间隔 #define DH_ViewSafeAreInsets(view) ({UIEdgeInsets insets; if(@available(iOS 11.f, *)) {insets = view.safeAreaInsets;} else {insets = UIEdgeInsetsZero;} insets;}) // 底部安全距离 #define DH_BottomSafeMargin (DH_IS_IPHONEX ? 34.f : 0.f) // 顶部安全距离 #define DH_TopSafeMargin (DH_IS_IPHONEX ? 24.f : 0.f) // 横屏左右的安全距离 #define DH_LandscapeSafeMargin (DH_IS_IPHONEX ? 44.f : 0.f) // 横屏左右的视频安全距离 #define DH_LandscapeVideoSafeMargin (DH_IS_IPHONEX ? 64.f : 0.f) // 导航栏加状态栏高度 #define DH_NavViewHeight (DH_IS_IPHONEX ? 84.f : 64.f) // 屏幕安全高度 #define DH_ScreenSafeHeight (DH_IS_IPHONEX ? (DH_SCREEN_SIZE_HEIGHT - 58.f) : DH_SCREEN_SIZE_HEIGHT) #define DH_SIZE_SCALE (1.f / [UIScreen mainScreen].scale) // 默认动画时间 #define DH_AnimationDuration 0.4f #define DH_LEGAL_PASSWORD_REGEX @"^[A-Za-z0-9!#%,<=>@_~`\\-\\.\\/\\(\\)\\*\\+\\?\\$\\[\\]\\\\\\^\\{\\}\\|]$" // 对象释放打印 #define DH_LOG_DEALLOCED {NSLog(@" 💔💔💔 %@ dealloced 💔💔💔", NSStringFromClass(self.class));} // 图片快捷方式 #define DH_IMAGENAMED(imageName) [UIImage imageNamed:imageName] // 主窗口 #define DH_KEY_WINDOW ([UIApplication sharedApplication].delegate).window #define DH_IOS_VERSION ([[[UIDevice currentDevice] systemVersion] floatValue]) //iOS版本号 #define DH_CLIENT_OS_VERSION ([NSString stringWithFormat:@"iOS%@", [[UIDevice currentDevice] systemVersion]]) //iOS系统版本号 #define DH_iOS11_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 11.0) #define DH_iOS10_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) // 判断是否为iPhone 5/5s #define DH_IS_IPHONE5 (DH_SCREEN_SIZE_WIDTH == 320.0f && DH_SCREEN_SIZE_HEIGHT == 568.0f) // 判断是否为iPhone 6/6s/7/8 #define DH_IS_IPHONE6_6s (DH_SCREEN_SIZE_WIDTH == 375.0f && DH_SCREEN_SIZE_HEIGHT == 667.0f) // 判断是否为iPhone X #define DH_IS_IPHONEX ((DH_SCREEN_SIZE_WIDTH == 375.0f && DH_SCREEN_SIZE_HEIGHT == 812.0f) || ((DH_SCREEN_SIZE_WIDTH == 414 && DH_SCREEN_SIZE_HEIGHT == 896))) // 判断是否为iPhone 6Plus/6sPlus/7Plus/8Plus #define DH_IS_IPHONE6Plus_6sPlus (DH_SCREEN_SIZE_WIDTH == 414.0f && DH_SCREEN_SIZE_HEIGHT == 736.0f) #pragma mark - Convinience RETURN Macro #define DH_RETURN_IF_TRUE(checkVal) {if(checkVal) \ {NSLog(@"🍎🍎🍎####:%s,Check value true,return...", __FUNCTION__);return;}} //判断为真返回 #define DH_RETURN_IF_FALSE(checkVal) {if(!(checkVal)) \ { NSLog(@"🍎🍎🍎####:%s,Check value false,return...", __FUNCTION__); return;}} //判断为假返回 #define DH_RETURN_NIL_IF_TRUE(checkVal) {if(checkVal) \ {NSLog(@" 🍎🍎🍎####:%s,Check value true,return...", __FUNCTION__);return nil;}} //判断为真返回空值 #define DH_RETURN_NIL_IF_FALSE(checkVal) {if(!(checkVal)) \ { NSLog(@" 🍎🍎🍎####:%s,Check value false,return...", __FUNCTION__); return nil;}} //判断为假返回空值 #define kAutoHideBarTime (4.0f) //悬浮条自动隐藏时间 #define kPictureHideBarTime (5.0f) //抓图录制图片自动隐藏时间 #pragma mark - 日期格式 //日期格式 #define kFormatTimeLocal (@"yyyyMMdd'T'HHmmss") #define DEVICE_NAME_MAX_LIMIT 32 #define CHANNEL_NAME_MAX_LIMIT 32 #pragma mark - Text //密码允许的字符(由于3.0.5版本引入安全基线需求,需要兼容旧的密码规则) #define DH_LEGAL_PASSWORD_OLD @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890~`!@#$%^&*()-_+={[]}|\\:;'\"<,>.?/ " #define DH_LEGAL_PASSWORD @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!#$%()*+,-./<=>?@[\\]^_`{|}~" #define DH_LEGAL_ACCOUNT @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890@_-." #define DH_LEGAL_ACCOUNT_WITHOUT_LIMIT @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!#$%()*+,-./<=>?@[\\]^_`{|}~&'" #define DH_LEGAL_NUMBER @"1234567890" #define DH_LEGAL_NUMBERnABC @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" #define DH_PASSWORD_MIN_LENGTH 8 //密码最小长度 #define DH_PASSWORD_MAX_LENGTH 32 //密码最大长度 #define DH_USERNAME_MAX_LENGTH 11 //登录名最大长度 #define DH_LOG_FUN NSLog(@"FUNCTION____%s____line%d____",__FUNCTION__,__LINE__); // 定义单例 #pragma mark Singleton #define SYNTHESIZE_SINGLETON_FOR_CLASS_HEADER(__CLASSNAME__) \ \ + (__CLASSNAME__*) sharedInstance; \ #define SYNTHESIZE_SINGLETON_FOR_CLASS(__CLASSNAME__) \ \ + (__CLASSNAME__ *)sharedInstance { \ static __CLASSNAME__ *shared##__CLASSNAME__ = nil; \ static dispatch_once_t onceToken; \ dispatch_once(&onceToken, ^{ \ shared##__CLASSNAME__ = [[self alloc] init]; \ }); \ return shared##__CLASSNAME__; \ } ///MARK: Fix Category Bug #define TT_FIX_CATEGORY_BUG(name) @interface TT_FIX_CATEGORY_BUG_##name:NSObject @end \ @implementation TT_FIX_CATEGORY_BUG_##name @end #endif /* DHPubDefine_h */