Ios7 如何根据设备类型将框架设置为UIBUTTON?

Ios7 如何根据设备类型将框架设置为UIBUTTON?,ios7,Ios7,我想基于5,6,6plus这样的设备将frame设置为UIButton,我尝试了以下代码,但6plus遇到了问题,因为调用了6,6plus相同的方法(是IPHONE_6_6plus),我的代码有什么问题请告诉我 #define IS_IPHONE_6_6PLUS ([[UIScreen mainScreen] bounds].size.height >= 667)?TRUE:FALSE #define IS_IPHONE6PLUS ([[UIScreen mainScreen] bou

我想基于5,6,6plus这样的设备将frame设置为UIButton,我尝试了以下代码,但6plus遇到了问题,因为调用了6,6plus相同的方法(是IPHONE_6_6plus),我的代码有什么问题请告诉我

#define IS_IPHONE_6_6PLUS  ([[UIScreen mainScreen] bounds].size.height >= 667)?TRUE:FALSE
#define IS_IPHONE6PLUS  ([[UIScreen mainScreen] bounds].size.width >= 414)?TRUE:FALSE
#define IS_IPHONE_4  ([[UIScreen mainScreen] bounds].size.height == 480)?TRUE:FALSE
#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )


- (void)viewDidLoad
{
if (IS_IPHONE_5)
     {
        loginview.frame = CGRectMake(108, 393, 35, 35);
        _signInButton.frame=CGRectMake(173,393, 35,35);
     }
     else if (IS_IPHONE_6_6PLUS)
     {
         loginview.frame = CGRectMake(128, 476, 35, 35);
         _signInButton.frame=CGRectMake(208,476, 35,35);

     }
     else if (IS_IPHONE6PLUS)
     {

         loginview.frame = CGRectMake(118, 506, 35, 35);
         _signInButton.frame=CGRectMake(163,506, 35,35);

     }
}
\define IS_IPHONE_6_6PLUS([UIScreen mainScreen]界限].size.height>=667)?真:假
#定义为\u IPHONE6PLUS([[UIScreen mainScreen]bounds].size.width>=414)?真:假
#定义为IPHONE 4([[UIScreen mainScreen]界限].size.height==480)?真:假
#定义为IPHONE 5(晶圆((双)[[UIScreen mainScreen]边界].size.height-(双)568)

提前感谢。

不知道您是如何定义设备大小的。我认为我这样定义不同设备的大小是错误的:-

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_RETINA ([[UIScreen mainScreen] scale] >= 2.0)

//--Use main screen to check screen height and width
#define SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)
#define SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height)
#define SCREEN_MAX_LENGTH (MAX(SCREEN_WIDTH, SCREEN_HEIGHT))
#define SCREEN_MIN_LENGTH (MIN(SCREEN_WIDTH, SCREEN_HEIGHT))

//--Defining Length According to size of different Devices
#define IS_IPHONE_4_OR_LESS (IS_IPHONE && SCREEN_MAX_LENGTH < 568.0)
#define IS_IPHONE_5 (IS_IPHONE && SCREEN_MAX_LENGTH == 568.0)
#define IS_IPHONE_6 (IS_IPHONE && SCREEN_MAX_LENGTH == 667.0)
#define IS_IPHONE_6P (IS_IPHONE && SCREEN_MAX_LENGTH == 736.0)
注意:-


它还包括iphone和ipad的大小。因此,您可以将其与生成常量文件一起使用,只需在视图控制器中导入即可,并使用与上述相同的功能

如果您的目的只是确保@3x设备和@2x设备上的“细线”保持纤细,即一个像素宽,那么您的做法是错误的,并且不必要地复杂

只需加载@3x@2个图像版本作为应用程序中的资源。 您不应该试图通过代码推断和处理屏幕大小。 -屏幕尺寸意外的新设备将破坏你的应用程序。
-您的应用程序无法在新的意外屏幕尺寸下正常运行(请考虑在较新的iPad上进行双视图多任务处理)。

您将如何处理双视图iPad的屏幕分辨率?新iPad?以逐案的方式处理屏幕分辨率是一条死胡同。你可以通过这个
#define is_ipad(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
来获得ipad的大小,并根据你的条件要求进行设置。这不是重点。关键是,以个案的方式处理屏幕分辨率最终会使你的应用程序无法在某些设备上正常工作,并且屏幕分辨率你今天可能不知道。
    if(IS_IPHONE_4_OR_LESS)
    {
        //set your button according to iphone 4
       //Your button looks in iphone 4 or less
    }
    if(IS_IPHONE_5)
    {
        //set your button according to iphone 5
       //Your button looks in iphone 5 
    }
    if(IS_IPHONE_6)
    {
        //set your button according to iphone 6
       //Your button looks in iphone 6
    }
    if(IS_IPHONE_6P)
    {
        //set your button according to iphone 6 plus
       //Your button looks in iphone 6 plus
    }