1

我只是有一个关于框架高度的问题。

框架.尺寸.高度 = 450;

当我设置一个高度为 450 的 CGRect 框架时,x = 0 和 y = 0。tableview 几乎一直延伸到底部。这个数字不是基于像素的,因为我在 iPhone 5 1136 上测试它。它甚至不应该延伸到一半。

谢谢!

4

3 回答 3

9

iOS 屏幕坐标以 UI 点为单位。在原始密度屏幕上,一个点是一个像素,因此在高分辨率/视网膜显示器上,一个点是两个像素。

2014 年更新:在 iPhone 6 Plus 上,1 点甚至是 3 个像素。(2018 年:以及 iPhone 6s Plus、7 Plus、8 Plus 和 X。)

于 2012-10-09T13:35:40.537 回答
3

你混淆了点和像素。有关详细信息,请参阅 Apple iOS 文档。

在 iOS 中,您在绘图代码中指定的坐标和底层设备的像素是有区别的。在使用 Quartz、UIKit、Core Animation 等原生绘图技术时,绘图坐标空间和视图坐标空间都是逻辑坐标空间,距离以点为单位。这些逻辑坐标系与系统框架用来管理屏幕像素的设备坐标空间分离。

系统自动将视图坐标空间中的点映射到设备坐标空间中的像素,但这种映射并不总是一对一的。这种行为导致了一个重要的事实,你应该永远记住:

一个点不一定对应一个物理像素。使用点(和逻辑坐标系)的目的是提供与设备无关的一致大小的输出。

于 2012-10-09T13:37:00.100 回答
1

正如 Jesper 和 Rikkles 所说,iPhone 5 配备 Retina 显示屏,这意味着您必须将设置的像素数量增加一倍,以匹配屏幕上实际显示的像素数量。

另外,不要忘记,如果您的容器视图是为原始 iPhone 分辨率 (320x480) 设计的,则在 iPhone 5 上使用时可能会调整其大小,使原始“450”设置为 450/480*568 = 533 像素高度.

于 2012-10-09T13:41:45.537 回答