我正在开发一个通用应用程序。我想知道 iPhone 的屏幕分辨率 (320 * 480) 和 iPad 中的 (768 *1024) 是否适用于所有 iphone(iPhone 3g、iPhone4 等)和所有 iPad。因为基于这些屏幕分辨率我在 iPhone 和 iPad 中设置 textField 和 UILabel 的宽度。这些适用于视网膜和非视网膜吗?
3 回答
Retina iPhone 和 iPad 使用与非 Retina 设备相同的坐标系。目前所有 iPad 的逻辑坐标空间都是 768x1024,除 iPhone 5 以外的所有 iPhone 的逻辑坐标空间都是 320x480。您的代码应该可以在 Retina 和非 Retina 设备上正常工作。
在 iPhone 5 上,您的应用程序将在屏幕顶部显示黑条,除非您通过包含 Default.png 扩展屏幕分辨率来告诉 iOS 您想要使用全屏。
您可以使用 来检查屏幕分辨率[[UIScreen mainScreen] bounds]
。此值在 Retina 和非 Retina 设备上将相同。您可以通过检查 ; 的值来检测 Retina 设备[[UIScreen mainScreen] scale]
。这里的值是每单位逻辑坐标空间的物理像素数(非 Retina 为 1.0,Retina 为 2.0)。
UIKit
并CoreGraphics
使用点而不是像素。
视网膜和非视网膜设备具有相同数量的点,但像素数量不同。这意味着相同的点值在不同的设备上可能意味着不同的像素值。
要回答您的问题,是的,相同的布局UILabel
宽度将在视网膜和非视网膜设备上显示相同。
来自 Apple 开发者文档:
In iOS, all coordinate values and distances are specified using floating-point values in units referred to as points. The measurable size of a point varies from device to device and is largely irrelevant. The main thing to understand about points is that they provide a fixed frame of reference for drawing.
查看视图编程指南中的点与像素部分:http: //developer.apple.com/library/ios/documentation/windowsviews/conceptual/viewpg_iphoneos/WindowsandViews/WindowsandViews.html#//apple_ref/doc/ uid/TP40009503-CH2-SW15
您始终可以使用这些功能来获取操作系统并对界面执行所需的操作。
var pattern:RegExp = /iphone5/i;
var str:String = Capabilities.os;
if (str.search(pattern)==0)
{
trace('iPhone5 Detected. Alter height.');
}else{
trace('No need to change dimensions if developing at 960x640');
}