gpt4 book ai didi

objective-c - 我可以在带有 subview 的 NSView 上设置 layer.transform 吗?

转载 作者:行者123 更新时间:2023-12-03 16:38:57 24 4
gpt4 key购买 nike

我想要一个带有 subview (图像、文本等)的 NSView,然后使用 myView.layer.transform = myTransform 对它应用 3d 变换。

阅读完文档后,我对是否允许这样做感到困惑。如果它是图层支持的 View ,那么我不应该直接与图层交互,因此设置变换似乎是错误的。

如果它是图层托管 View ,那么我不应该有 subview 。

如果我想设置layer.transform,这是否意味着我必须通过CALayer设置所有绘图,并停止使用 subview ?

最佳答案

我刚刚在具有嵌套 subview NSScrollViews 的 NSView 上设置了 CALayer 动画,并且工作正常。我认为限制在于重叠、叠加的 View 。 (后者的问题是没有指定的绘制顺序;无法预测哪个 View 将显示在顶部。)

但是,如果您也想将变换应用于 subview ,则必须单独为它们设置图层。或者,是的,您可以转储 subview 并将所有内容放在单个 View 的 CALayers 上。您可以使用边界和位置属性来控制它们的大小和位置。 (注意位置是从中心开始,而不是左下角,除非您更改 anchor 。)

如果您正在进行图层托管,请勿将变换应用于根图层 (view.layer)。相反,创建一个新的 CALayer,向其中添加内容,向其中添加变换,然后将其作为子图层应用到根图层。避免直接使用根层。

层托管设置的快速示例:

// Set up the root layer.
[[self.aViewController view] setLayer:[CALayer layer]];
[[self.aViewController view] setWantsLayer:YES];
// Set up a sublayer.
CALayer *sublayer = [CALayer layer];
[self.aViewController.view.layer addSublayer:sublayer];
// Repeat if you need additional sublayers. There's a name property if you need to distinguish between them.

关于objective-c - 我可以在带有 subview 的 NSView 上设置 layer.transform 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5994626/

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