如何判断用户是否使用iPhone 6或6+

时间:2014-09-26 22:10:12

标签: ios objective-c iphone xcode

请原谅我,如果这是一个非常愚蠢的问题,我只是所有这些东西的初学者。我想为iPhone 6和6 Plus制作一个单独的界面,但我不知道如何最好地解决这个问题。这是一个非常简单的应用程序,只是为了让自己更熟悉语言等。我想知道是否有一种简单的方法来判断用户是否正在使用6或6加来为它们创建单独的界面。谢谢:))

5 个答案:

答案 0 :(得分:2)

使用单个故事板。从raywanderlich了解autolayout,它认为这是一个非常好的资源。

此外,现在利用xcode 6中为ios 8引入的大小类。这称为自适应布局

因此,不是分别为3.5,4,4.7,5.5英寸设备制作上述四个视图,而是担心组合各自的横向模式,只需使用自动布局进行4种尺寸组合(如果可能) ,强烈推荐)并放松可能会出现的任何其他设备尺寸。

答案 1 :(得分:0)

检测iPhone版请使用以下代码。

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
      if ([[UIScreen mainScreen] scale] == 2.0) {

           if([UIScreen mainScreen].bounds.size.height == 667){
             // iPhone retina-4.7 inch(iPhone 6)
           } 
           else if([UIScreen mainScreen].bounds.size.height == 568){
             // iPhone retina-4 inch(iPhone 5 or 5s)
           } 
           else{
            // iPhone retina-3.5 inch(iPhone 4s)
          }
      }
      else if ([[UIScreen mainScreen] scale] == 3.0)
      {
           if([UIScreen mainScreen].bounds.size.height == 736.0){
              //iPhone retina-5.5 inch screen(iPhone 6 plus)
           }
      }
 }

来自Here

的参考资料

答案 2 :(得分:0)

在.pch文件中编写此代码

#define IS_IPHONE_6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0)
#define IS_IPHONE_6_PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 736.0)

并且无论何时您需要在任何控制器中,您只需检查条件。

答案 3 :(得分:0)

以下是执行您所要求的方法。需要注意的一件事是在iOS7及以下版本中,当您检查[[UIScreen mainScreen] bounds]屏幕边界时,无论手机的方向如何,它始终都会将宽度和高度列为相同。所以如果它&#39 ;在横向模式下的iPhone5,它仍然会将宽度列为320,高度仍为568.在iOS8中,这已经改变,现在如果相同的iPhone5处于横向状态,它将列出宽度为568,高度为320。是解决这个问题的方法:

+ (BOOL) deviceHasFourInchScreen
{
    return [DeviceType deviceHasScreenWithIdiom:UIUserInterfaceIdiomPhone scale:2.0 height:568.0];
}

+ (BOOL) deviceHasFourPointSevenInchScreen
{
    return [DeviceType deviceHasScreenWithIdiom:UIUserInterfaceIdiomPhone scale:2.0 height:667.0];
}

+ (BOOL) deviceHasFivePointFiveInchScreen
{
    return [DeviceType deviceHasScreenWithIdiom:UIUserInterfaceIdiomPhone scale:3.0 height:736.0];
}

+ (BOOL) deviceHasScreenWithIdiom:(UIUserInterfaceIdiom)userInterfaceIdiom scale:(CGFloat)scale height:(CGFloat)height
{
    CGRect mainScreenBounds = [[UIScreen mainScreen] bounds];
    CGFloat mainScreenHeight;

    if ([OperatingSystemVersion operatingSystemVersionLessThan:@"8.0"])
    {
        mainScreenHeight = mainScreenBounds.size.height;
    }
    else
    {
        mainScreenHeight = (UIDeviceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) ? mainScreenBounds.size.width : mainScreenBounds.size.height;
    }

    if ([[UIDevice currentDevice] userInterfaceIdiom] == userInterfaceIdiom && [[UIScreen mainScreen] scale] == scale && mainScreenHeight == height)
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

以下是随附的OperatingSystem类方法:

+ (NSString *) currentOperatingSystemVersion
{
    return [[UIDevice currentDevice] systemVersion];
}
+ (BOOL) operatingSystemVersionLessThanOrEqualTo:(NSString *) operatingSystemVersionToCompare
{
    return ([[self currentOperatingSystemVersion] compare: operatingSystemVersionToCompare options:NSNumericSearch] != NSOrderedDescending);    
}

答案 4 :(得分:-1)

在prefix.pch

中添加以下行
#define iPhoneVersion ([[UIScreen mainScreen] bounds].size.height == 568 ? 5 : ([[UIScreen mainScreen] bounds].size.height == 480 ? 4 : ([[UIScreen mainScreen] bounds].size.height == 667 ? 6 : ([[UIScreen mainScreen] bounds].size.height == 736 ? 61 : 999))))

现在在编程中你可以说......

if (iPhoneVersion==4) {
    NSLog("This is 3.5 inch iPhone - iPhone 4s or below");
} else if (iPhoneVersion==5) {
    NSLog("This is 4 inch iPhone - iPhone 5 family");
} else if (iPhoneVersion==6) {
    NSLog("This is 4.7 inch iPhone - iPhone 6");
} else if (iPhoneVersion==61) {
    NSLog("This is 5.5 inch iPhone - iPhone 6 Plus.. The BIGGER");
} else {
    NSLog("This is iPad");
}

然而我会说通过学习自动布局为所有iPhone使用一个故事板。