以下内容只是抛砖引玉,希望大家多提意见,多改错误,太简单的宏使用方法就不做解释了,来点扩展的
//没用#define前是这样的,每个ViewController都要写这么一段重复的代码 写多了就烦了
/***********************处理前*****************************/
UILabel *titleLabel = [[UILabel alloc] init];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.textColor = [UIColor redColor];
titleLabel.text = @"导航栏标题";
titleLabel.font=[UIFont fontWithName:nil size:17.0f];
[titleLabel sizeToFit];
self.navigationItem.titleView = titleLabel;
//在全局配置文件(config.h)中定义了一个宏
#define SET_NAV_TITLE(_TITLE) ({\
UILabel *titleLabel = [[UILabel alloc] init];\
titleLabel.backgroundColor = [UIColor clearColor];\
titleLabel.textColor = [UIColor redColor];\
titleLabel.text = _TITLE;\
titleLabel.font=[UIFont fontWithName:nil size:17.0f];\
[titleLabel sizeToFit];\
self.navigationItem.titleView = titleLabel;\
})
//定义了宏后就这么一句了
/***********************处理后*****************************/
SET_NAV_TITLE(@"导航栏标题");
//向大家请教个问题,怎么向宏里面传一个实例对象进去,可不可以实现
最后给大家介绍一个好玩的,试调时很好用,把下面一段代码复制到.pch中,你打印的时候就能看到效果了
//一个很高级的 NSLog
#define NSLog(format, ...) do { \
fprintf(stderr, "<%s : %d> %s\n", \
[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], \
__LINE__, __func__); \
(NSLog)((format), ##__VA_ARGS__); \
fprintf(stderr, "-------------------------------完美分割线---嘿嘿----------------------------\n"); \
} while (0)