gpt4 book ai didi

macos - 为 Mac 和 iOS 编写 CALayer 子类的技巧?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:40 25 4
gpt4 key购买 nike

y 坐标很烦人,因为 0 在 mac 上是底部,在 iOS 上是顶部。但我不想翻转一切。 . .例如,图像在两个平台上的上升方式相同。

让所有内容在两个平台上运行的最有效方法是什么?

最佳答案

我处理这个问题的方式,以及在 Core Plot framework 中使用的方式, 是将我所有的图层坐标都基于 Quartz 坐标系(原点在左下角)。在 iOS 上,我随后创建了一个自定义层托管 View ,该 View 取消反转其托管层的坐标系。 CALayers 在 iOS 上仍然具有相同的坐标系,只是支持 UIViews 的 CALayers 的坐标系倒置了。

为此,我在 UIView 的初始化中使用如下代码:

self.layer.sublayerTransform = CATransform3DMakeScale(1.0, -1.0, 1.0);

然后我创建一个主要托管层作为该 UIView 支持层的子层,并将我所有的自定义层添加到该托管层。

同样,您可以查看 Core Plot 框架的代码,了解它在实践中的工作原理,因为这就是该框架使用几乎所有相同的代码跨两个平台处理基于图层的绘图的方式。

在 iOS 上只有少数情况需要注意,例如需要翻转 NSString 绘图方法以说明 Quartz 坐标空间。

关于macos - 为 Mac 和 iOS 编写 CALayer 子类的技巧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4706272/

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