0

在过去的几天里,我一直在试图解决这个问题,但继续为 iPhone 5,5s 和 6 获得相同的屏幕尺寸。--> 高度 -1136 宽度 640。我如何分辨这两种设备之间的区别?是模拟器吗?我是否必须在真实设备上运行才能获得当前尺寸?我究竟做错了什么?我在 Yosemite 上运行 Xcode 6 并使用模拟器进行测试。

    float heightOfScreen = [[UIScreen mainScreen ] nativeBounds].size.height;
    float widthOfScreen = [[UIScreen mainScreen ] nativeBounds].size.width;
    CGSize size = CGSizeMake(widthOfScreen , heightOfScreen);
    NSLog(@"Size: %@", NSStringFromCGSize(size));


    // Iphone 6 plus H-1704 W-960
    // Iphone 6      H-1136 W-640  <--- (why are they the same)
    // Iphone 5s     H-1136 W-640  <---
    // Iphone 4s     H-960  W-640
4

2 回答 2

3

每部 iPhone 都有不同的内部名称:

- (void)viewDidLoad {
    [super viewDidLoad];  

    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
    NSLog(@"iPhone Device%@",[self platformType:platform]);

    free(machine);
}


- (NSString *) platformType:(NSString *)platform
{
    if ([platform isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";
    if ([platform isEqualToString:@"iPhone5,1"])    return @"iPhone 5 (GSM)";
    if ([platform isEqualToString:@"iPhone5,2"])    return @"iPhone 5 (GSM+CDMA)";
    if ([platform isEqualToString:@"iPhone5,3"])    return @"iPhone 5c (GSM)";
    if ([platform isEqualToString:@"iPhone5,4"])    return @"iPhone 5c (GSM+CDMA)";
    if ([platform isEqualToString:@"iPhone6,1"])    return @"iPhone 5s (GSM)";
    if ([platform isEqualToString:@"iPhone6,2"])    return @"iPhone 5s (GSM+CDMA)";
    if ([platform isEqualToString:@"iPhone7,2"])    return @"iPhone 6";
    if ([platform isEqualToString:@"iPhone7,1"])    return @"iPhone 6 Plus";
    if ([platform isEqualToString:@"i386"])         return @"Simulator";
    if ([platform isEqualToString:@"x86_64"])       return @"Simulator";

    return platform;
}

顺便说一句,iPhone 4、5 和 6 都有不同的屏幕尺寸:

iPhone 4, 4S:        (640, 960)
iPhone 5, 5C, 5S:    (640, 1136)
iPhone 6:            (750, 1334)
iPhone 6 Plus:       (1080, 1920)

你可以参考这个问题:Identify new iPhone model on xcode (5, 5c, 5s)

于 2014-12-18T20:06:38.033 回答
2

看看这个iphone分辨率指南,我相信你正在以缩放模式运行你的模拟器。所以尝试禁用它:

  1. 启动 iOS 设置应用程序。
  2. 向下滚动并选择显示和亮度。
  3. 选择“显示缩放”部分下的“查看”选项。
  4. 预览并选择您的首选设置。
于 2014-10-23T05:29:47.887 回答