在我的Universal ios应用程序中,我有两个头文件,例如FrameRates_iPad.h
和FrameRates_iPhone.h
,我需要将其导入到viewcontroller类中,具体取决于应用程序正在构建的当前设备,请帮助我实现此目的
答案 0 :(得分:0)
我喜欢为我的通用应用程序使用1个控制器。无需使用FrameRates_iPad.h
和FrameRates_iPhone.h
并编写相同的代码两次!以下是我为iPad和iPhone特定代码使用1个控制器的方法。
您可以查看my post on how I use Macros。
检查运行代码的设备的一种方法是使用UI_USER_INTERFACE_IDIOM()
。 UI_USER_INTERFACE_IDIOM
返回当前设备支持的界面惯用语,可在iOS 3.2 +。
#define IDIOM UI_USER_INTERFACE_IDIOM()
#define IPAD UIUserInterfaceIdiomPad /* iPad, obviously */
#define IPHONE UIUserInterfaceIdiomPhone /* iPhone, to include iPod touch */
此代码表示如果设备是iPad,则它可以自动旋转,否则,如果设备是iPhone或同等设备,则支持的唯一方向是Portrait。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if ( IDIOM == IPAD ) {
return YES;
}else{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
return YES;
}
为按钮或具有框架属性的任何其他对象设置特定大小。
CGRect frame;
if ( IDIOM == IPAD ) {
frame = CGRectMake(tableView.frame.size.width-105,5,30,30);
} else {
frame = CGRectMake(tableView.frame.size.width-60,5,30,30);
}
UIButton *aButton = [[UIButton alloc] initWithFrame: frame ];
答案 1 :(得分:0)
您可以在xcode构建设置中为 iPad_target 设置预处理器宏 IS_IPAD = 1 ,然后:
#ifdef IS_IPAD
#import "FrameRates_iPad.h"
#endif
#ifndef IS_IPAD
#import "FrameRates_iPhone.h"
#endif