1

我想知道如何使用 iPhone 5 来检测屏幕尺寸。我的应用程序目前在 iPhone 5 上使用 3.5 英寸界面,所以当我使用代码时

CGSize 结果 = [[UIScreen mainScreen] bounds].size;

这给了我 400 而不是 568 高度的屏幕尺寸。那是因为我在 iPhone 5 上使用 3.5 英寸界面。我知道我需要更改应用程序的布局,但由于时间限制,我想保持这种方式。

或者我是否需要获得比例因子才能获得真实像素

CGFloat screenScale = [[UIScreen mainScreen] scale];

请帮忙...

4

6 回答 6

3

您可以在以下条件下轻松检测 iphone、iphone5 和 iPad:-

 if([[UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPhone)
 {
     if ([[UIScreen mainScreen] bounds].size.height == 568)
     {


     }
     else
     {
         //iphone 3.5 inch screen
     }
 }
 else
 {
        //[ipad]
 }

只需在此检测设备类型上访问我的答案

于 2012-12-11T04:49:31.440 回答
1
instead of find hight you have to use following code to find your device is iPhone 5 or below iphone 5.

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
-(void)ViewDidLoad
{
   if(IS_IPHONE_5)
   {
      //code of iphone 5
   }
   else
  {
      //code of below iphone 5
  }
}
于 2012-12-12T05:06:22.263 回答
1
CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568)
   // 4-inch
else
   // 3.5-inch
于 2012-12-10T23:34:59.930 回答
0

布局应该能够适应这种情况,而无需检查设备类型,一旦 Apple 决定再次更改其外形尺寸,设备类型就会中断。

使用 Autosizing (与 Autolayout 不同,但如果这对您可用,那就更好了),如果这还不够 subclassUIView和 override -layoutSubviews,请使用 9-patches 等。这样做,我认为不需要知道设备是否是iPhone 4 或 iPhone 5。

于 2012-12-10T23:44:34.480 回答
0

首先,直到您在应用程序中为 iPhone 5 指定加载图像,它才会像 iPhone 4 一样运行并在您调用 [[UIScreen mainScreen] bounds].size 时返回 { 320, 480 }

其次,您应该使用边界:

CGSize screenSize = [[UIScreen mainScreen] bounds].size;

您可能还需要考虑状态栏高度:

CGFloat statusBarHeight = ([UIApplication sharedApplication].statusBarHidden ? 0.0f : [UIApplication sharedApplication].statusBarFrame.size.height);

如果您根据当前方向(纵向或横向)获取屏幕宽度,则应翻转 bounds 函数返回的宽度和高度。

if (UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
    screenSize = CGSizeMake(screenSize.height, screenSize.width);
}
于 2012-12-10T23:47:10.243 回答
0

如果项目不包含带有新默认图像的 Default-568h@2x.png,iPhone 5 将报告常规的 480x320 屏幕尺寸。

阅读此线程 如何检测 iPhone 5(宽屏设备)?

于 2012-12-10T23:38:43.743 回答