在我的情况下,我有一个高度定制的iPhone应用程序,包含所有自定义视图。我想利用iPhone 5的屏幕尺寸,但我的视图需要精确的布局,并且在我的视图上设置autoresizingMask是不够的。
我想在每个源文件中都得到某种项目范围的定义标志,我需要在运行时设置这个定义/标志。在我的具体情况下,我可能会导入一些头文件定义,如下所示:
if ( IS_IPHONE_5 ) {
/*
Set appropriate frames for the additional screen space
*/
}
else {
/*
Set views otherwise
*/
}
这个问题不是完全主观的 - 它可以适用于任何想要设置和检索项目范围定义的人。也许另一种情况可能是颜色主题或可以在设置中更改的东西。
如何在程序执行期间设置这些定义,如何将它们合并到源文件中?
谢谢。
答案 0 :(得分:7)
这可能就像将宏放入应用的APPNAME_prefix.pch
文件一样简单:
#define IS_IPHONE_5 ([[UIScreen mainScreen]bounds].size.height == 568)
您应用程序中的每个文件都可以使用它。
作为另一种建议,我认为我的偏好是在UIDevice
上添加一个类别,也可能为了方便起见添加一个宏,然后只有需要它的对象(即视图中的对象和负责布局的控制器层)导入它,以避免将模型耦合到UIKit
。
例如,UIDevice+iPhone5.h
:
#define IS_IPHONE_5 [[UIDevice currentDevice] isIPhone5]
@interace UIDevice (iPhone5)
- (BOOL)isIPhone5;
@end
和UIDevice+iPhone5.m
:
@implementation UIDevice(iPhone5Checking)
- (BOOL)isIPhone5
{
return ([[UIScreen mainScreen]bounds].size.height == 568); //or however else you want to check
}
@end
最适合您的需求。希望这有帮助!