我知道根据屏幕尺寸改变应用程序并不是一个好主意,但我正在尝试修改相机并使用自定义叠加图像,因此我需要知道屏幕尺寸。有很多解决方案可以使用宏检测屏幕大小等我正在使用它:
-(void)detectPhone{
CGFloat width;
width= [[UIScreen mainScreen] bounds].size.width;
if(width==320) {
CGFloat height;
height = [[UIScreen mainScreen] bounds].size.height;
if(height==480) {
NSLog(@"iPhone 4/4s");
}
else {
NSLog(@"iPhone 5");
}
}
else if (width==375) {
NSLog(@"iPhone 6");
}
else {
NSLog(@"iPhone 6+");
}
}
使用此方法或任何不起作用的情况有什么问题吗?通过模拟器似乎很好。任何指针将不胜感激。感谢
答案 0 :(得分:3)
这样很好,但是你要比较浮点数,所以我会避免使用==
,而是使用>
答案 1 :(得分:1)
我用这个:
#define IS_IPHONE [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone #define PJ_SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width) #define PJ_SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height) #define PJ_SCREEN_MAX_LENGTH (MAX(PJ_SCREEN_WIDTH, PJ_SCREEN_HEIGHT)) #define PJ_SCREEN_MIN_LENGTH (MIN(PJ_SCREEN_WIDTH, PJ_SCREEN_HEIGHT)) #define IS_HEIGHT_GTE_568 PJ_SCREEN_MAX_LENGTH >= 568.0f #define IS_RETINA ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale == 2.0)) #define IOS7_DELTA_HEIGHT (([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) ? 20:0) #define IS_IOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) #define DEVICE_SIZE [[[[UIApplication sharedApplication] keyWindow] rootViewController].view convertRect:[[UIScreen mainScreen] bounds] fromView:nil].size
如果您想查看设备型号,请查看:Determine device (iPhone, iPod Touch) with iPhone SDK
答案 2 :(得分:0)
我认为您将遇到iOS8问题。来自iOS8
[UIScreen mainScreen] .bounds
面向接口(查看WWDC 2014的会话“View Controller Advancements in iOS 8”),这意味着在iOS8的横向模式中,高度和宽度都是相反的。
您可以使用以下代码创建帮助程序:
CGRect bounds = [UIScreen mainScreen].bounds;
if (([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) && UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
bounds.size = CGSizeMake(bounds.size.height, bounds.size.width);
//Your code to detect the device
...
}
答案 3 :(得分:0)
您应该只有一次屏幕,然后您可以在整个应用程序中使用它(无论何时需要)。为此,您可以在CGSize
中的变量AppDelegate.h
deviceSize和此方法第一行AppDelegate.m
中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
中设置变量,您可以获得此设备大小,< / p>
deviceSize = [[UIScreen mainScreen] bounds].size;
你可以定义一个这样的函数,
- (CGSize) sizeOfDevice {
return deviceSize;
}
将其添加到AppDelegate.h
中,就像这样,
- (CGSize) sizeOfDevice;
然后你可以将它与你的委托对象一起使用。