【发布时间】:2015-09-04 19:34:18
【问题描述】:
我有 iOS 应用程序,我正在使用 this 帖子中解释的尺寸指令。
我正在最新的 Xcode (6.4) 版本上使用 iOS 模拟器进行测试。当我运行我的项目并在设备选择中选择 iPhone 4s 时,项目运行时会显示正确的检测消息和正确的 Storyboard;如果我使用 iPhone 5 和 iPhone 5s 运行也是一样。但是当我选择 iPhone 6 或 6 Plus 时,我在这部分放置的检测和控制台日志将 iPhone 检测为 Iphone 5 并显示 iPhone 5 的情节提要。我尝试检测分辨率(以 CGRect 的点为单位)高度并使用 NSLog 在控制台日志中显示,但无论模拟器显示大小正确的窗口,日志中都会出现 iphone 5 的分辨率大小。
当我定义指令时有代码:
#define IS_IPHONE_4 (fabs((double)[[UIScreen mainScreen]bounds].size.height - (double)480) < DBL_EPSILON)
#define IS_IPHONE_5 (fabs((double)[[UIScreen mainScreen]bounds].size.height - (double)568) < DBL_EPSILON)
#define IS_IPHONE_6 (fabs((double)[[UIScreen mainScreen]bounds].size.height - (double)667) < DBL_EPSILON)
#define IS_IPHONE_6P (fabs((double)[[UIScreen mainScreen]bounds].size.height - (double)736) < DBL_EPSILON)
当我检测到设备时有代码:
//Para detectar screen size
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
if (IS_IPHONE_4)
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"4sStoryboard" bundle:[NSBundle mainBundle]];
UIViewController *vc =[storyboard instantiateInitialViewController];
self.window.rootViewController = vc;
NSLog(@"iPhone 4 storyboard loaded up.");
}
else
{
if(IS_IPHONE_5)
{
UIStoryboard *storyboard1 = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
UIViewController *vc2 =[storyboard1 instantiateInitialViewController];
self.window.rootViewController = vc2;
NSLog(@"iPhone 5 storyboard loaded up.");
}
else
{
if (IS_IPHONE_6)
{
UIStoryboard *storyboard1 = [UIStoryboard storyboardWithName:@"6Storyboard" bundle:[NSBundle mainBundle]];
UIViewController *vc2 =[storyboard1 instantiateInitialViewController];
self.window.rootViewController = vc2;
NSLog(@"iPhone 6 storyboard loaded up.");
}
else
{
if (IS_IPHONE_6P)
{
UIStoryboard *storyboard1 = [UIStoryboard storyboardWithName:@"6pStoryboard" bundle:[NSBundle mainBundle]];
UIViewController *vc2 =[storyboard1 instantiateInitialViewController];
self.window.rootViewController = vc2;
NSLog(@"iPhone 6 plus storyboard loaded up.");
}
}
}
这是我的日志的出口,无论是iphone 5还是6还是6plus,iPhone 4s的检测都正常工作:
2015-09-04 15:44:55.823 denuncia[1737:156925] iPhone 5 storyboard loaded up.
我该如何解决这个问题?我在这方面工作了很长时间,很快就会遇到一些麻烦...非常感谢您的帮助。
【问题讨论】:
-
您能否发布有关如何检测设备的代码?
-
Option 1)显示检测设备的代码和选择情节提要的代码。Option 2)将您的应用程序更新为单个故事板,该故事板使用尺寸等级和自动布局适应所有设备。Note:您应该知道,您的代码可能会在 iOS 9 中滑过的 iPad 上失败(如果 Apple 允许在较大的 iPhone 上滑过,甚至会失败) -
我发布了代码,我希望它只适用于 iphone 而不是 ipad
标签: ios iphone xcode6 simulator