我知道在objective-c中,有一种方法可以知道用户正在使用哪个设备。但我真的是一个新的iOS开发,我不知道在objective-c中那些复杂而复杂的命令。任何人都可以通过编码告诉我如何识别手机型号。
另外,如果我可以知道用户正在使用哪个设备,是否可以在不同的iOS设备中更改不同字体大小的UILabel,例如iPhone 3.5“和iPhone 4.0”?或者有没有办法改变不同iOS设备中的字体位置(自动布局被禁用)?
答案 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大小更改布局,例如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
或#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
等等。
如果您有任何疑问,请在评论中提问,我会改进我的答案。希望它有帮助,如果它在这里是google search for determining iDevice