当前位置: 萬仟网 > IT编程>移动>IOS > iOS - 常用宏定义和PCH文件知识点整理

iOS - 常用宏定义和PCH文件知识点整理

2019年05月09日 07:29  | 萬仟网IT编程  | 我要评论

(一)pch文件操作步骤演示:

第一步:图文所示:

第二步:图文所示:

 

(二)常用宏定义整理:

(1)常用log日志宏(输出日志详细可定位某个类、某个函数、某一行)

//============================================================nslog
#ifdef debug
#define ddlog(fmt, ...) nslog((@"%s [line %d] " fmt), __pretty_function__, __line__, ##__va_args__)
#define base_url @""
#else
#define ddlog(...)
#define base_url @""
#endif

#ifdef debug
#define ddstring [nsstring stringwithformat:@"%s", __file__].lastpathcomponent
#define ddlog(...) printf("%s: %s [%d]: %s\n\n",[[nsstring dh_stringdate] utf8string], [ddstring utf8string] ,__line__, [[nsstring stringwithformat:__va_args__] utf8string]);
#define base_url @""
#else
#define ddlog(...)
#define base_url @""
#endif
//============================================================(第二个比较详细适应于真机模拟器)

 

#pragma mark - 其中第二个宏定义中会用到(nsstring分类文件,该文件如下)
// nsstring+dhextension.h 文件中
#import <foundation/foundation.h>

@interface nsstring (dhextension)
/**
 log日志会用到
 
 @return nsstring
 */
+ (nsstring *)dh_stringdate;
@end


// nsstring+dhextension.m 文件中
#import "nsstring+dhextension.h"

@implementation nsstring (dhextension)
#pragma mark - log日志会用到
+ (nsstring *)dh_stringdate {
    nsdateformatter *dateformatter = [[nsdateformatter alloc] init];
    [dateformatter setdateformat:@"yyyy-mm-dd hh:mm:ss"];
    nsstring *datestring = [dateformatter stringfromdate:[nsdate date]];
    return datestring;
}
@end

 

(2)常用屏幕适配宏(方法有很多可以灵活运用)

//============================================================uiscreen/iphone机型判断
// 屏幕宽
#define ddscreenw [uiscreen mainscreen].bounds.size.width
// 屏幕高
#define ddscreenh [uiscreen mainscreen].bounds.size.height

// 用户机型判断宏
#define ddcurrentmodesize [[uiscreen mainscreen] currentmode].size
// 判断是否是ipad
#define ddipad ([[uidevice currentdevice] userinterfaceidiom] == uiuserinterfaceidiompad)
// 判断iphone4系列
#define ddiphone4 ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(640, 960), ddcurrentmodesize) && !ddipad : no)
// 判断iphone5系列
#define ddiphone5 ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(640, 1136), ddcurrentmodesize) && !ddipad : no)
// 判断iphone6系列(包含iphone6/iphone7/iphone8)
#define ddiphone6 ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(750, 1334), ddcurrentmodesize) && !ddipad : no)
// 判断iphone6p系列(包含iphone6p/iphone7p/iphone8p)
#define ddiphonep ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(1242, 2208), ddcurrentmodesize) && !ddipad : no)
// 判断iphonex
#define ddiphonex ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(1125, 2436), ddcurrentmodesize) && !ddipad : no)
// 判断iphonexr
#define ddiphonexr ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(828, 1792), ddcurrentmodesize) && !ddipad : no)
// 判断iphonexs
#define ddiphonexs ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(1125, 2436), ddcurrentmodesize) && !ddipad : no)
// 判断iphonexs max
#define ddiphonexsmax ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(1242, 2688), ddcurrentmodesize) && !ddipad : no)

// 顶部navbar高度
#define ddnavbarh ((ddiphonex==yes || ddiphonexr==yes || ddiphonexs==yes || ddiphonexsmax==yes) ? 88.0 : 64.0)
// 底部tabbar高度
#define ddtabbarh ((ddiphonex==yes || ddiphonexr==yes || ddiphonexs==yes || ddiphonexsmax==yes) ? 83.0 : 49.0)
// 顶部statusbar高度
#define ddstatusbarh ((ddiphonex==yes || ddiphonexr==yes || ddiphonexs==yes || ddiphonexsmax==yes) ? 44.0 : 20.0)
// 判断是不是刘海屏(iphonex系列)
#define ddiphonenewx ((ddnavbarh==88.0 || ddiphonexr==83.0 || ddstatusbarh==44.0) ? yes : no)
// 底部安全区域高度
#define ddtabbarsafeh (ddiphonenew ? 34.f : 0.f)
// 顶部适配系统方法
#define status_bar_frame [[uiapplication sharedapplication] statusbarframe]
// iphonex系列判断(包含iphone x/iphone xs/iphone xs max/iphone xr)
#define  ddis_iphonex (cgsizeequaltosize(cgsizemake(375.f, 812.f), [uiscreen mainscreen].bounds.size) || cgsizeequaltosize(cgsizemake(812.f, 375.f), [uiscreen mainscreen].bounds.size)  || cgsizeequaltosize(cgsizemake(414.f, 896.f), [uiscreen mainscreen].bounds.size) || cgsizeequaltosize(cgsizemake(896.f, 414.f), [uiscreen mainscreen].bounds.size))
//============================================================uiscreen/iphone机型判断(方法有很多种灵活运用)

(3)其他宏运用补充:

//============================================================rgb
#define ddrgbcolor(r, g, b) [uicolor colorwithred:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]
#define ddbackgroundrgb ddrgbcolor(236, 236, 236)
#define uicolorfromhex(s) [uicolor colorwithred:(((s & 0xff0000) >> 16))/255.0green:(((s &0xff00) >>8))/255.0blue:((s &0xff))/255.0alpha:1.0]

//============================================================默认图片
#define ddplaceimage [uiimage imagenamed:@"imagename.png"]

//============================================================self
#define weakself(weakself)  __weak __typeof(self) weakself = self;

 

(三)后续常用宏定义会慢慢补充;

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

◎已有 0 人评论

Copyright © 2019  萬仟网 保留所有权利. 粤ICP备17035492号-1
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com