Ios 检测设备类型&;调整视图的方向

Ios 检测设备类型&;调整视图的方向,ios,objective-c,if-statement,orientation,device,Ios,Objective C,If Statement,Orientation,Device,我很确定我现在用的是一种完全错误的方式——但在我弃船并重新开始之前,我想我会问。。。我基本上需要能够检测到正在使用应用程序的设备(iPhone 4或iPhone 5)以及设备所在的方向,然后根据这些调整viewcontroller的输出-以下是我拥有的: 检测设备(好吧,它不检测设备,只是如果它是一个更大的屏幕,但这对我来说没关系!): 如果我注释掉中间的部分,该应用程序在iPhone 5模拟器上运行良好,但是当我使用iPhone 4模拟器并旋转设备时,标签会从屏幕上消失——这就是我需要检测设备

我很确定我现在用的是一种完全错误的方式——但在我弃船并重新开始之前,我想我会问。。。我基本上需要能够检测到正在使用应用程序的设备(iPhone 4或iPhone 5)以及设备所在的方向,然后根据这些调整viewcontroller的输出-以下是我拥有的:

检测设备(好吧,它不检测设备,只是如果它是一个更大的屏幕,但这对我来说没关系!):

如果我注释掉中间的部分,该应用程序在iPhone 5模拟器上运行良好,但是当我使用iPhone 4模拟器并旋转设备时,标签会从屏幕上消失——这就是我需要检测设备的原因(在两台设备上都可以在纵向模式下运行,因为底部的标签集不会出现在屏幕底部)

如果按原样运行,即使设备(任何设备)处于纵向模式/视图,标签和徽标也会显示在横向视图中

我猜问题是我的设置/计划中出现了某种形式的“失败”或逻辑错误,但此时我想不出另一种方法来对其进行文字/编程


谢谢

我想您希望else块中的代码只在横向模式下为3.5英寸设备运行,对吗?
在这种情况下,您需要在第二个if之前添加一个else,否则else语句之后的第三个代码块将始终运行,如果我理解正确,它将创建一个横向布局,而不管您传入的方向如何。

不完全正确-如果任何设备处于纵向模式,我需要在第一个if块中运行代码位,如果设备是iPhone 5/宽屏设备且处于横向模式,则运行第二个if块;如果设备不是iPhone 5/宽屏但仍处于横向模式,则运行第二个if块我希望else块代码运行(对于3.5英寸屏幕)-希望这是有意义的!然后你需要将else更改为else if,并检查方向是否为横向,因为你当前实现它的方式是,除非设备是iPhone 5且方向为横向,否则else块将始终运行。是的,排序感谢-还意识到我需要为非横向设置创建新宏-宽屏屏幕(将568点修改为480点)&将其作为条件添加到杰出的if中,因为它们与I_PHONE_5一起“真实”!
#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - (    double )568 ) < DBL_EPSILON )
- (void)doLayoutForOrientation:(UIInterfaceOrientation)orientation {
if (UIInterfaceOrientationIsPortrait(orientation)) {
    _Logo.frame = CGRectMake(97, 50, 127, 150);
    _timeLabel.frame = CGRectMake(17, 248, 286, 21);
    _years.frame = CGRectMake(70, 277, 35, 50);
    _yearsLabel.frame = CGRectMake(64, 335, 42, 21);
    _months.frame = CGRectMake(145, 277, 35, 50);
    _monthsLabel.frame = CGRectMake(131, 335, 58, 21);
    _days.frame = CGRectMake(220, 277, 35, 50);
    _daysLabel.frame = CGRectMake(216, 335, 39, 21);
    _hours.frame = CGRectMake(70, 393, 35, 50);
    _hoursLabel.frame = CGRectMake(62, 451, 46, 21);
    _minutes.frame = CGRectMake(145, 393, 35, 50);
    _minutesLabel.frame = CGRectMake(132, 451, 61, 21);
    _seconds.frame = CGRectMake(220, 393, 35, 50);
    _secondsLabel.frame = CGRectMake(203, 451, 68, 21);
} if (UIInterfaceOrientationIsLandscape(orientation) && IS_IPHONE_5) {
    _Logo.frame = CGRectMake(221, 20, 127, 150);
    _timeLabel.frame = CGRectMake(141, 178, 286, 21);
    _years.frame = CGRectMake(87, 221, 35, 50);
    _yearsLabel.frame = CGRectMake(83, 279, 42, 21);
    _months.frame = CGRectMake(162, 221, 35, 50);
    _monthsLabel.frame = CGRectMake(150, 279, 58, 21);
    _days.frame = CGRectMake(234, 221, 35, 50);
    _daysLabel.frame = CGRectMake(232, 279, 39, 21);
    _hours.frame = CGRectMake(308, 221, 35, 50);
    _hoursLabel.frame = CGRectMake(302, 279, 46, 21);
    _minutes.frame = CGRectMake(385, 221, 35, 50);
    _minutesLabel.frame = CGRectMake(372, 279, 61, 21);
    _seconds.frame = CGRectMake(466, 221, 35, 50);
    _secondsLabel.frame = CGRectMake(449, 279, 68, 21);
} else {
    _Logo.frame = CGRectMake(177, 20, 127, 150);
    _timeLabel.frame = CGRectMake(97, 178, 286, 21);
    _years.frame = CGRectMake(27, 221, 35, 50);
    _yearsLabel.frame = CGRectMake(23, 279, 42, 21);
    _months.frame = CGRectMake(102, 221, 35, 50);
    _monthsLabel.frame = CGRectMake(90, 279, 58, 21);
    _days.frame = CGRectMake(174, 221, 35, 50);
    _daysLabel.frame = CGRectMake(172, 279, 39, 21);
    _hours.frame = CGRectMake(248, 221, 35, 50);
    _hoursLabel.frame = CGRectMake(242, 279, 46, 21);
    _minutes.frame = CGRectMake(325, 221, 35, 50);
    _minutesLabel.frame = CGRectMake(312, 279, 61, 21);
    _seconds.frame = CGRectMake(406, 221, 35, 50);
    _secondsLabel.frame = CGRectMake(389, 279, 68, 21);
}
}