gpt4 book ai didi

ios - 访问 iPhone 绝对像素位置

转载 作者:行者123 更新时间:2023-11-29 01:13:30 24 4
gpt4 key购买 nike

在 iPhone/iPad 的屏幕空间中,Apple 使用的点通常是屏幕实际分辨率的一半。我的问题是,是否可以访问实际像素本身?例如,如果我使用一个 UIView,并将其大小/位置设置为 0,0,0.5,0.5,背景颜色为红色,我就无法在屏幕上看到它。

只是想知道这是否可能。

谢谢!

最佳答案

当然可以。

您已有的代码应该可以正常工作(UIView,大小为 (0.5, 0.5))。我刚刚运行它并从模拟器中捕获了这个结果:

enter image description here

是的。这很难看。让我们放大它。

enter image description here

是的,您可以在屏幕上绘制比单个点更小的值。

但是,要绘制单个像素,您需要使用 1/scaleOfScreen 的点值(因为并非所有设备都具有 2x显示)。因此,例如,您希望您的代码看起来像这样:

CGFloat scale = [UIScreen mainScreen].scale;
CGFloat pixelPointWidth = 1/scale;

UIView* v = [[UIView alloc] initWithFrame:CGRectMake(20, 20, pixelPointWidth, pixelPointWidth)];
v.backgroundColor = [UIColor redColor];
[self.view addSubview:v];

这将创建一个占据屏幕上单个像素的 UIView

不过,如果您想进行大量像素完美的绘图,您可能应该使用比单个 UIView ( have a look at Core Graphics ) .


不过。

在 iPhone 6 Plus 上绘图时,使用此方法可能会遇到一些问题。因为它的屏幕 scale 不同于它的 nativeScale,它会首先在 3x 的逻辑坐标空间中呈现您的内容,然后下采样到 实际 屏幕分辨率(大约 2.6x)。

这很可能会导致一些像素溢出,您的“像素” View 可以在相邻像素中呈现(尽管通常会降低亮度)。

不幸的是,如果不使用更低级别的 API(例如 OpenGL 或 Metal),就没有解决此问题的简单方法,您可以在其中绕过这种自动缩放然后下采样,并直接绘制到屏幕的实际坐标空间中。


  • Have a look here了解不同设备如何在屏幕上呈现内容的简要概述。

  • Have a look here详细了解 iPhone 6 Plus 上的像素溢出是如何发生的。

关于ios - 访问 iPhone 绝对像素位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35501070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com