0

我正在学习 iOS 开发,我对这些设备尺寸有点困惑。当我在模拟器中测试时,我有这样的选择:

Hardware -> Device -> iPhone
Hardware -> Device -> iPhone (Retina 3.5 inch)
Hardware -> Device -> iPhone (Retina 4 inch)

我应该针对所有这三个选项测试我的应用程序吗?各自的屏幕尺寸对应于哪部手机?(例如,当我们针对 3.5 英寸进行测试时,它适用于哪款 iPhone 是什么意思?)。

4

6 回答 6

1

除非你要为 iPhone 5 和以前的 iPhone 提供完全不同的 UI,否则你真的不需要太担心屏幕尺寸。每当您在 iOS 中对任何类型的自定义渲染进行任何操作时,您都以点而不是像素为单位指定坐标。iOS 会根据设备自动为你计算像素值。

当涉及到图像时,您唯一需要关心的是视网膜显示器。为此,您只需要有一个双倍大小的图像,最后带有@2x。例如,对于视网膜前的手机,您可能有一个 100x100 像素的图像,称为image.png. 然后你需要一个叫做image@2x.png200x200 像素的。iOS 会在需要时自动加载视网膜版本。

如果您确实想要 iPhone 5 的不同 UI,那么解决方案 @user2277872 会很好。

你当然也应该考虑使用 Autolayout,因为这让很多事情变得非常容易,特别是如果你不打算为 iPhone 5 使用不同的 UI,因为它会根据一组 pre 自动定位元素- 你给它定义的规则。例如,您可能希望按钮始终距离屏幕底部 20 像素。无论屏幕是 4 英寸还是 3.5 英寸,自动布局都会为您执行此操作。

于 2013-07-30T08:13:24.697 回答
0

3.5 英寸的屏幕尺寸对应于直到 iPhone 5 为止的每个 iPhone/iPod touch 屏幕的尺寸。iPhone 5 有一个 4 英寸的屏幕。

您必须针对所有屏幕尺寸测试您的应用程序。事实上,Apple 建议使用 Auto Layout 以确保即使屏幕大小不同,您的应用程序也会看起来不错,例如当用户拨打电话时状态栏变大时。

于 2013-07-30T08:10:38.023 回答
0

请参阅 iPhone 有 3.5 英寸和 4 英寸两种不同的屏幕尺寸,配备 3.5 英寸屏幕的 iPhone 有视网膜和非视网膜显示屏的选项,但从 iPhone 5 开始的 4 英寸屏幕只有视网膜显示屏。iPhone5 的屏幕尺寸为320px568p及以下 iPhone5 为320x480

因此,如果您打算同时针对您的应用程序的屏幕尺寸,您应该在所有尺寸的 iPhone 上进行测试

于 2013-07-30T08:11:16.330 回答
0

您应该针对所有这些进行测试。第一个表示 iPhone 4 之前的设备。第二个对应于 iPhone 4 和 iPhone 4s。最后一个是 iPhone 5。

于 2013-07-30T08:04:44.300 回答
0

硬件 -> 设备 -> iPhone

//iPhone 3gs & iPod Touch 3 & early

硬件 -> 设备 -> iPhone(视网膜 3.5 英寸)

//iPhone4,4s & iPod Touch 4

硬件 -> 设备 -> iPhone(视网膜 4 英寸)

//iPhone5 & iPod Touch 5
于 2013-07-30T08:06:22.393 回答
0

嗯,不同的 iPhone 有不同的屏幕尺寸。例如,iPhone 4,4S 的尺寸是

320 X 480

iPhone 5 是

1136 X 640 

所以你需要做的是检查屏幕大小,或者检查当前运行的设备类型,并让它返回。

这是在另一个页面上找到的答案:这里

if([[UiDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
 if(UIScreenOverscanCompensationScale==1136/640){
         //move to your iphone5 storyboard
         [UIStoryboard storyboardWithName:(NSString *) bundle (NSBundle *)];
  }
    else{
         //move to your iphone4s storyboard
         [UIStoryboard storyboardWithName:(NSString *) bundle (NSBundle *)];
  }
}
于 2013-07-30T08:07:15.343 回答