我正在开发一款通用应用程序。我想知道,iPhone的屏幕分辨率(320 * 480)和iPad的屏幕分辨率(768 *1024)是否适用于所有iPhone(iPhone 3g、iPhone4等)和所有iPad。因为基于这些屏幕分辨率,我正在设置iPhone和iPad中textField的宽度以及UILabel的宽度。这些是否适用于视网膜和非视网膜屏幕?
[[UIScreen mainScreen] bounds]
检查屏幕分辨率。这个值在 Retina 和非 Retina 设备上是相同的。您可以通过检查 [[UIScreen mainScreen] scale]
的值来检测 Retina 设备;这里的值是每个逻辑坐标空间单位的物理像素数(非 Retina 为 1.0,Retina 为 2.0)。UIKit
和CoreGraphics
使用点而不是像素。
视网膜和非视网膜设备具有相同数量的点,但具有不同数量的像素。这意味着相同的点值在不同设备上可能意味着不同的像素值。
回答您的问题,是的,相同布局的UILabel
宽度将在视网膜和非视网膜设备上显示相同。
从Apple开发者文档中得知:
在iOS中,所有坐标值和距离都使用浮点值以称为点的单位指定。点的可测量大小因设备而异,并且在很大程度上是无关紧要的。关于点的主要事情是它们为绘制提供了一个固定的参考框架。
请查看“视图编程指南”中的“点与像素”部分: 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');
}