屏幕分辨率和浏览器分辨率之差

nez*_*and 4 iphone resolution

iPhone 4s的分辨率为640 x 960像素,但http://www.whatismyscreenresolution.com/表示320 x 480像素.有谁能描述这种差异吗?

小智 8

当然,该网站实际上并不知道您设备的物理分辨率.它通过JavaScript要求操作系统检索分辨率.在iOS上,这有点奇怪:所有与图形相关的框架和库都测量"点"的大小,一个点是非视网膜设备上的一个像素,但一个点是视网膜设备上的两个像素.

例如,如果你曾经问过UIKit同样的事情,你会得到相同的结果.在iPhone 4和4S上,[[UIScreen mainScreen] bounds].size还将返回320 x 480 - 以磅为单位的大小.

在JavaScript中,您可以通过乘以window.devicePixelRatio属性来获得正确的分辨率:

var scale = window.devicePixelRatio;
window.alert(screen.width * scale + "px x " + screen.height * scale + "px");
Run Code Online (Sandbox Code Playgroud)

在本机代码中,您可以通过乘以[UIScreen mainScreen].scale:获得物理大小:

CGSize size;
size.width = [UIScreen mainScreen].scale * [UIScreen mainScreen].bounds.size.width;
size.height = [UIScreen mainScreen].scale * [UIScreen mainScreen].bounds.size.height;
NSLog(@"%@", NSStringFromCGSize(size));
Run Code Online (Sandbox Code Playgroud)

此外,您要求检测Retina显示的CSS3媒体查询:

<link rel="stylesheet" type="text/css" href="foo.css" media="only screen and (-webkit-min-device-pixel-ratio: 2)" />
Run Code Online (Sandbox Code Playgroud)