我知道在objective-c中,有一种方法可以知道用户正在使用哪个设备。但是我真的是iOS开发的新手,不知道objective-c中那些复杂繁杂的命令。谁能告诉我如何通过编码识别手机型号。
另外,如果我可以知道用户正在使用哪个设备,是否可以在不同的 iOS 设备(例如 iPhone 3.5" 和 iPhone 4.0" )中更改 UILabel 的不同字体大小?或者有什么方法可以改变不同iOS设备中的字体位置(禁用自动布局)?
我知道在objective-c中,有一种方法可以知道用户正在使用哪个设备。但是我真的是iOS开发的新手,不知道objective-c中那些复杂繁杂的命令。谁能告诉我如何通过编码识别手机型号。
另外,如果我可以知道用户正在使用哪个设备,是否可以在不同的 iOS 设备(例如 iPhone 3.5" 和 iPhone 4.0" )中更改 UILabel 的不同字体大小?或者有什么方法可以改变不同iOS设备中的字体位置(禁用自动布局)?
您可以使用以下代码根据屏幕大小区分设备,并使用它来更改 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 }
}
我确定正在运行的 iOS 设备的方式,因此我们可以根据 iDevices 大小更改布局,例如iPad
和iPhone
类似。
// 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
or #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 3
、3GS
等4
。
如果您有任何问题,请在评论中提出,我会改进我的答案以包括在内。希望它有帮助,如果它在这里是用于确定 iDevice 的谷歌搜索