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