sabir
sabir

Reputation: 626

I want to identify iphone versions in my project in ios

hi iam using the following code in my project

#define isiPhone6 ( [[UIScreen mainScreen] bounds].size.height == 667)?TRUE:FALSE
#define isiPhone5  ([[UIScreen mainScreen] bounds].size.height == 568)?TRUE:FALSE

UIStoryboard *mainStoryboard = nil;

if (isiPhone5)
    {  
            mainStoryboard = [UIStoryboard storyboardWithName:@"MainIphone5" bundle:nil];;

        // this is iphone 4 inch
    }

  else  if (isiPhone6)
    {

        mainStoryboard = [UIStoryboard storyboardWithName:@"MainIphone6" bundle:nil];;

        // this is iphone 4 inch
    }


  else
    {
        mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        //Iphone  3.5 inch
    }


self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = [mainStoryboard instantiateInitialViewController];
    [self.window makeKeyAndVisible];

but the loop is not entering in to the isiphone6 and simulator taking the iphone5 storyboards. whats the problem can anyone help me please.......

Upvotes: 1

Views: 314

Answers (5)

RJiryes
RJiryes

Reputation: 961

Check out the SDVersion ( https://github.com/sebyddd/SDVersion) library.

It does exactly what you need, and much more. You can also check whether its an iPad, iPhone 5C, 5S, 6, 6Plus, Mac, etc. It's great. Hope this helps!

Upvotes: 1

Jeremy Huddleston Sequoia
Jeremy Huddleston Sequoia

Reputation: 23623

You really shouldn't need to make decisions based on this information in your app. If you find yourself wanting this information, chances are you should be making the decision based on some other criteria instead.

If you are dead set on doing this, see Check iOS Simulator type and version as well for how to do this in a way that the iOS Simulator will handle.

Upvotes: 0

BHASKAR
BHASKAR

Reputation: 1201

See this Class

https://github.com/froztbytes/UIDeviceHardware

Or Create this class

#import <Foundation/Foundation.h>

@interface UIDeviceHardware : NSObject
 + (NSString *) platform;
 + (NSString *) platformString;
@end



#import "UIDeviceHardware.h"
#include <sys/types.h>
#include <sys/sysctl.h>

@implementation UIDeviceHardware

+ (NSString *) platform{
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithUTF8String:machine];
    free(machine);
    return platform;
}

+ (NSString *) platformString{
    NSString *platform = [self platform];
    if ([platform isEqualToString:@"iPhone1,1"])    return @"iPhone 1G";
    if ([platform isEqualToString:@"iPhone1,2"])    return @"iPhone 3G";
    if ([platform isEqualToString:@"iPhone2,1"])    return @"iPhone 3GS";
    if ([platform isEqualToString:@"iPhone3,1"])    return @"iPhone 4 (GSM)";
    if ([platform isEqualToString:@"iPhone3,3"])    return @"iPhone 4 (CDMA)";
    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 (CDMA)";
    if ([platform isEqualToString:@"iPhone5,3"])    return @"iPhone 5C";
    if ([platform isEqualToString:@"iPhone5,4"])    return @"iPhone 5C";
    if ([platform isEqualToString:@"iPhone6,1"])    return @"iPhone 5S";
    if ([platform isEqualToString:@"iPhone6,2"])    return @"iPhone 5S";
    if ([platform isEqualToString:@"iPhone7,1"])    return @"iPhone 6 Plus";
    if ([platform isEqualToString:@"iPhone7,2"])    return @"iPhone 6";

    if ([platform isEqualToString:@"iPod1,1"])      return @"iPod Touch 1G";
    if ([platform isEqualToString:@"iPod2,1"])      return @"iPod Touch 2G";
    if ([platform isEqualToString:@"iPod3,1"])      return @"iPod Touch 3G";
    if ([platform isEqualToString:@"iPod4,1"])      return @"iPod Touch 4G";
    if ([platform isEqualToString:@"iPod5,1"])      return @"iPod Touch 5G";

    if ([platform isEqualToString:@"iPad1,1"])      return @"iPad";
    if ([platform isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";
    if ([platform isEqualToString:@"iPad2,2"])      return @"iPad 2 (GSM)";
    if ([platform isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";
    if ([platform isEqualToString:@"iPad2,5"])      return @"iPad Mini (WiFi)";
    if ([platform isEqualToString:@"iPad2,6"])      return @"iPad Mini (GSM)";
    if ([platform isEqualToString:@"iPad2,7"])      return @"iPad Mini (CDMA)";
    if ([platform isEqualToString:@"iPad3,1"])      return @"iPad 3 (WiFi)";
    if ([platform isEqualToString:@"iPad3,2"])      return @"iPad 3 (CDMA)";
    if ([platform isEqualToString:@"iPad3,3"])      return @"iPad 3 (GSM)";
    if ([platform isEqualToString:@"iPad3,4"])      return @"iPad 4 (WiFi)";
    if ([platform isEqualToString:@"iPad3,5"])      return @"iPad 4 (GSM)";
    if ([platform isEqualToString:@"iPad3,6"])      return @"iPad 4 (CDMA)";

    if ([platform isEqualToString:@"iPad4,1"])      return @"iPad Air (WiFi)";
    if ([platform isEqualToString:@"iPad4,2"])      return @"iPad Air (GSM)";
    if ([platform isEqualToString:@"iPad4,3"])      return @"iPad Air (CDMA)";
    if ([platform isEqualToString:@"iPad5,3"])      return @"iPad Air 2 (WiFi)";
    if ([platform isEqualToString:@"iPad5,4"])      return @"iPad Air 2 (CDMA)";

    if ([platform isEqualToString:@"iPad4,4"])      return @"iPad Mini Retina (WiFi)";
    if ([platform isEqualToString:@"iPad4,5"])      return @"iPad Mini Retina (CDMA)";
    if ([platform isEqualToString:@"iPad4,7"])      return @"iPad Mini 3 (WiFi)";
    if ([platform isEqualToString:@"iPad4,8"])      return @"iPad Mini 3 (CDMA)";
    if ([platform isEqualToString:@"iPad4,9"])      return @"iPad Mini 3 (CDMA)";


    if ([platform isEqualToString:@"i386"])         return [UIDevice currentDevice].model;
    if ([platform isEqualToString:@"x86_64"])       return [UIDevice currentDevice].model;

    return platform;
}

@end

Upvotes: 1

Ujjal Suttra Dhar
Ujjal Suttra Dhar

Reputation: 846

Try this method.

    BOOL isIphone5()
    {
     if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
       CGSize result = [[UIScreen mainScreen] bounds].size;
       CGFloat scale = [UIScreen mainScreen].scale;
       result = CGSizeMake(result.width * scale, result.height * scale);
       if(result.height == 1136){
       return YES;
       }
     }
     return NO;
    }

Upvotes: 0

BlackSheep
BlackSheep

Reputation: 1087

This code is good inside the application for using a different view in a Universal App like my post here: Different view for devices

If you want using a different Storyboard for a Different device you have to go in your appDelegate.m

First setting MainIphone6 in your target.

and using this code under the application didFinishLaunchingWithOptions:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
    UIStoryboard *storyBoard;

    CGSize result = [[UIScreen mainScreen] bounds].size;
    CGFloat scale = [UIScreen mainScreen].scale;
    result = CGSizeMake(result.width *scale, result.height *scale);

    if(result.height <= 1136){
        storyBoard = [UIStoryboard storyboardWithName:@"MainIphone5" bundle:nil];
        UIViewController *initViewController = [storyBoard instantiateInitialViewController];
        [self.window setRootViewController:initViewController];
    }
    if(result.height <= 960){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }
}

Then add your Storyboard iPad

Hope this help you

Upvotes: 0

Related Questions