【问题标题】:Tips on writing a CALayer subclass for both Mac and iOS?为 Mac 和 iOS 编写 CALayer 子类的技巧?
【发布时间】:2011-01-16 15:43:39
【问题描述】:

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

让一切都在两个平台上运行的最有效方法是什么?

【问题讨论】:

    标签: macos ios portability coordinates calayer


    【解决方案1】:

    我处理此问题的方式以及Core Plot framework 中使用的方式是将我的所有图层坐标基于 Quartz 坐标系(原点位于左下角)。然后,在 iOS 上,我创建了一个自定义图层托管视图,该视图不反转其托管图层的坐标系。 CALayers 在 iOS 上还是一样的坐标系,只是 UIView 后面的 CALayers 坐标系倒过来了。

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

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

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

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

    在 iOS 上您需要注意一些情况,例如需要翻转 NSString 绘图方法以考虑 Quartz 坐标空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 2011-03-08
      • 2011-06-15
      相关资源
      最近更新 更多