识别编码中的不同iOS设备?

时间:2013-06-25 02:31:11

标签: ios objective-c layout uilabel iboutlet

我知道在objective-c中,有一种方法可以知道用户正在使用哪个设备。但我真的是一个新的iOS开发,我不知道在objective-c中那些复杂而复杂的命令。任何人都可以通过编码告诉我如何识别手机型号。

另外,如果我可以知道用户正在使用哪个设备,是否可以在不同的iOS设备中更改不同字体大小的UILabel,例如iPhone 3.5“和iPhone 4.0”?或者有没有办法改变不同iOS设备中的字体位置(自动布局被禁用)?

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码根据屏幕尺寸区分设备,并使用它来更改UILabel框架,字体大小等...

#define IS_WIDESCREEN ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
#define IS_IPHONE ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone" ] )
#define IS_IPOD   ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPod touch" ] )
#define IS_IPHONE_5 ( IS_IPHONE && IS_WIDESCREEN )


- (void)iPhoneScreenCompatibility
{
    if (IS_IPHONE_5) {
//do something
    } else {
//do something    }
}

答案 1 :(得分:0)

我确定运行的iOS设备的方式,以便我们可以根据iDevices大小更改布局,例如iPadiPhone

   // iPhone 5 (iPhone 4")
   #define IS_PHONEPOD5() ([UIScreen mainScreen].bounds.size.height == 568.0f && [UIScreen mainScreen].scale == 2.f && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

要获得iPhone 5,您也可以

  // iPhone 5 alternative
  #define IS_PHONEPOD5() ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

  // iPad
  #define IS_IPAD() (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

  // iPhone 4 (iPhone 3.5")
  #define IS_IPHONE() (UI_USER_INTERFACE_IDIOM() == UIUserIntefaceIdiomPhone)

我将这些内容添加到xxxx-Prefix.pch中,以便我可以在整个项目中使用它,而无需执行#import#include。我不是说这是最好的方式,但这种方式对我来说非常好。

如果您设置了这些变量,则可以使用if statements之类的

  if(IS_IPAD()) {
      // Do something if iPad
  } else if(IS_IPHONEPOD5()) {
      // Do something if iPhone 5 or iPod 5
  } else {
     // Do something for everything else (This is what I do) but you could 
     // replace the 'else' with 'else if(IS_IPHONE())'

  }

还有其他方法可以做到这一点。例如,一位开发人员编写了一些扩展UIDevice的代码,可以找到https://github.com/erica/uidevice-extension/

  [[UIDevice currentDevice] platformType]   // ex: UIDevice4GiPhone
  [[UIDevice currentDevice] platformString] // ex: @"iPhone 4G"

这将允许您检测iDevice是iPhone 33GS4等等。

如果您有任何疑问,请在评论中提问,我会改进我的答案。希望它有帮助,如果它在这里是google search for determining iDevice