gpt4 book ai didi

iphone - 为什么 iPhone 上需要 Quartz 2D 文本翻转变换

转载 作者:行者123 更新时间:2023-12-03 18:56:11 25 4
gpt4 key购买 nike

From the Apple docs:

In iOS, you must apply a flip transform to the current graphics context in order for the text to be oriented as shown in Figure 16-1. [A flip transform] involves inverting the y-axis and translating the origin point to the bottom of the screen. Listing 16-2 shows you how to apply such transformations in the drawRect: method of an iOS view. This method then calls the same MyDrawText method from Listing 16-1.

为什么?这看起来很奇怪。

最佳答案

正如我在 this answer 中展开的那样,Quartz 2D坐标系使用左下角为(0,0),与Mac上的窗口坐标系相同。 iPhone 使用左上角作为其 View 布局的 (0,0),因此支持 UIView 的图层的坐标系绕 Y 轴翻转。

如果您使用 NSString UIKit 扩展将文本绘制到 UIView 的支持层中,它将正确定向,因为考虑了这种翻转。但是,如果您使用较低级别的 Quartz 文本绘制,则需要首先围绕 Y 轴翻转坐标系(以便 0,0 再次位于左下角)以正确定位事物。

正常的 Core Graphics 上下文(用于绘制图像或 PDF 以进行存储或显示)不会反转,因此情况正好相反。普通的 Quartz 文本可以很好地渲染,但是使用 NSString UIKit 扩展绘制的内容需要首先反转坐标系。这给开发人员带来了很多困惑,他们的图像和文本在绘制到屏幕上时看起来是正确的,但在保存到磁盘时却是颠倒的。

至于为什么要这样做,大家都在猜测。这两种坐标系在某些情况下都有其优点。不过,这是一件很容易纠正的事情。

关于iphone - 为什么 iPhone 上需要 Quartz 2D 文本翻转变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3486392/

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