3

就我而言,我有一个高度定制的 iPhone 应用程序,其中包含所有自定义视图。我想利用 iPhone 5 的屏幕尺寸,但我的视图需要精确的布局,并且在我的视图上设置 autoresizingMask 是不够的。

我想在我的每个源文件中都有某种项目范围的定义标志,我需要在运行时设置这个定义/标志。在我的具体情况下,我也许可以像这样导入一些头文件定义:

if ( IS_IPHONE_5 ) {

/* 
   Set appropriate frames for the additional screen space
*/
}

else {

/* 
  Set views otherwise
*/
}

这个问题并不完全是主观的——它可以适用于任何希望设置和检索项目范围定义的人。也许另一种情况可能是颜色主题或可以在设置中更改的东西。

如何在我的程序执行时设置这些定义以及如何将它们合并到我的源文件中?

谢谢你。

4

1 回答 1

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

哪个最适合您的需求。希望这可以帮助!

于 2012-09-29T18:20:22.753 回答