-1

有没有办法检测用户正在使用什么设备,然后使用该信息,使应用程序使用特定nib文件?

现在,我拥有的代码是

- (BOOL)application: (UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions{
  if(isiPhone5){
    self.RootViewController = @"RootViewController_iPhone5";
  }
  else{
    self.RootViewController = @"RootViewController_iPhone4";
  }
}

我用于查找设备的其他代码工作并告诉我用户正在使用什么设备,但实际上并没有将 .xib 文件从 更改RootViewController_iPhone4.xibRootViewController_iPhone5.xib。有没有办法做到这一点?

我不想使用自动布局,因为我希望根据设备发生其他自定义事情,例如如果正在使用的设备是 iPhone 4 和 iPhone 5,则视图控制器中的不同按钮名称

4

4 回答 4

6

试试这个方法。。

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
    CGRect screenBounds = [[UIScreen mainScreen] bounds];
    if (screenBounds.size.height ==568)
    {
          self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone5" bundle:nil];
    }
    else
    {
          self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone4" bundle:nil];
    }

更新的答案

检查这个... 用于屏幕检测的黑屏

于 2013-10-04T04:11:48.563 回答
1
#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )



- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
     if (IS_IPHONE_5)
    {
        self = [super initWithNibName:@"YourViewController~iphone5" bundle:nil];
    }
    else
    {
        self = [super initWithNibName:@"YourViewController~iphone" bundle:nil];
    }
    return self;
}

尝试这样的事情

于 2013-10-04T04:13:03.307 回答
1
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    if(result.height == 480)
    {
        // iPhone 4 Classic

        //first always target 4 for better performance & practice.
    }
    if(result.height == 568)
    {
        // iPhone 5
    }
}else {
//it's ipad
}
于 2013-10-04T12:26:07.703 回答
1

您可以通过以下方式实现此目的

在 App 委托中创建一个宏,以便在整个项目中使用它。它将基于设备的屏幕高度。

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

现在您可以测试 iphone 4 和 iphone 5 的条件了

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){


    if(IS_IPHONE_5){


        self.window.RootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController_iPhone5" bundle:nil];

    }
    else
    {
        self.window.RootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
    }
    }
  }
于 2013-10-04T04:53:13.193 回答