我最近一直在做的是在我需要检查设备的任何类中添加一个定义语句。这也可以在任何全局头文件中完成。
#define IS_IPHONE (!IS_IPAD)
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPhone)
布尔测试来自Detect iphone 5 4" screen。
bool isiPhone5 = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136));
if (isiPhone5) {
// Setup For iPhone 5 Screen Size
UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"MyiPhone5StoryboardName" bundle:nil];
UIViewController *initViewController = [storyBoard instantiateInitialViewController];
[self.window setRootViewController:initViewController];
}
如果您已经在使用 storyboards并且只想从您的项目开始时为 iPhone 5 设备使用的默认值更改故事板,这将非常有效。如果您从头开始使用现有的非故事板项目,您可以这样做。
#define IS_IPHONE (!IS_IPAD)
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPhone)
bool isiPhone5 = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136));
if (isiPhone5) {
// Load iPhone 5 Storyboard
UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone5" bundle:nil];
UIViewController *initViewController = [storyBoard instantiateInitialViewController];
[self.window setRootViewController:initViewController];
}
else if (IS_IPAD) {
// Load IPAD StoryBoard
UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
UIViewController *initViewController = [storyBoard instantiateInitialViewController];
[self.window setRootViewController:initViewController];
}
else {
// Load the iPhone 3.5" storyboard
UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
UIViewController *initViewController = [storyBoard instantiateInitialViewController];
[self.window setRootViewController:initViewController];
}
当我现在开始一个项目时,我在故事板中设计 iPhone 3.5" 版本(如果我正在使用故事板),然后当我完成该设计时,我进入我的项目文件并找到故事板文件。因为故事板文件只是一个XML 布局文件,我可以将该文件加载到我最喜欢的文本编辑器中并更改两个标签。
将 iPhone 转换为 iPad
- 在文件顶部找到
targetRuntime="iOS.CocoaTouch
“
- 改成
targetRuntime="iOS.CocoaTouch.iPad"
- 在文件底部添加您可能会发现这个
<simulatedScreenMetrics key="destination" type="retina4"/>
- 将此更改为
<simulatedScreenMetrics key="destination"/>
最后一项只有在您的主情节提要文件设置为 4" iPhone 屏幕时才会出现。
这里重要的是,如果您只将 iPhone 5 添加到现有项目中,您只需要第一次检查以覆盖默认值,并加载您的特殊故事板文件。这实际上使我不必在 iPhone 5 的代码中手动布局所有对象。