-2

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

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

4

2 回答 2

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    }
}
于 2013-06-25T02:57:24.070 回答
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,以便我可以在整个项目中使用它,而无需执行#importor #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

如果您有任何问题,请在评论中提出,我会改进我的答案以包括在内。希望它有帮助,如果它在这里是用于确定 iDevice 的谷歌搜索

于 2013-06-25T08:24:29.803 回答