Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSView或CALayer的子视图?_Objective C_Cocoa_Calayer_Nsview - Fatal编程技术网

Objective c NSView或CALayer的子视图?

Objective c NSView或CALayer的子视图?,objective-c,cocoa,calayer,nsview,Objective C,Cocoa,Calayer,Nsview,今天我决定尝试使用CALayers来显示覆盖在NSView上的矩形框。图层将包含一些文本,并根据需要显示变量文本的时间打开和关闭。我之所以想使用CALayer,是因为使用CALayer可以轻松完成漂亮的渲染和动画。我实现了我的层,它就像一个魅力。然而,在使用我的GUI并多次单击各种按钮打开和关闭图层后,我认为我的图层视图的层次结构似乎有偏差。我想焦点一定是转到了另一个NSView,它又被关闭了。我基本上对在给定时间处理哪一层感到非常困惑,我失去了对视图层次结构的控制 我的问题是:我是否应该使用N

今天我决定尝试使用CALayers来显示覆盖在NSView上的矩形框。图层将包含一些文本,并根据需要显示变量文本的时间打开和关闭。我之所以想使用CALayer,是因为使用CALayer可以轻松完成漂亮的渲染和动画。我实现了我的层,它就像一个魅力。然而,在使用我的GUI并多次单击各种按钮打开和关闭图层后,我认为我的图层视图的层次结构似乎有偏差。我想焦点一定是转到了另一个NSView,它又被关闭了。我基本上对在给定时间处理哪一层感到非常困惑,我失去了对视图层次结构的控制

我的问题是:我是否应该使用NSView或CALayers的子视图来显示应用程序中可能多次出现的情况?在我看来,很容易失去对您正在工作的层的控制。是否有一种方法可以通过名称识别当前图层,以便您可以重用该图层,或者最好使用图层,删除它们,然后在下次需要时重新创建该图层

谢谢你抽出时间。干杯,特隆

我经常很快地打开和关闭CALayers,一点问题也没有。所以如果你愿意,你可以这么做

删除它们并快速重新创建它们,似乎不会引起任何问题。它不是一个大的资源用户,我从来没有见过任何其他的问题这样做。如果你想的话,一定要这么做

我真的不明白你说的命名层是什么意思-当然,因为iVars有一个名称!你必须说出你所有的Calayer

下面是一个.h文件中的典型生产代码:

CALayer         *rearLayer;
CALayer         *hugeBasket;        // holds everything for ez-on/off
CALayer         *theActualSkyline;  // nb, same name as similar UIView
CALayer         *someTrees;         // minor stuff
CALayer         *someBushes;        // overs

// for the stupid help basket..
CALayer         *LLDRear;
CALayer         *LLDArrowLeft;
CALayer         *LLDArrowRight;
CALayer         *LLDPointlessUpArrow;
CALayer         *LLDYetAnotherStupidShadow;

// etc etc..
等等。我真的不明白你怎么能不说出他们的名字,你知道的

最后,

4、别忘了层比NSView好得多,因为:NSView在重叠的兄弟姐妹之间存在劣质/错误的关系:它们基本上不起作用。请在此处阅读:

希望有帮助

PS-这些可能也有助于CALayers


你的回答很有道理,当我实现它时,我能够控制我的层。我最初没有给我的CALayers命名,除了我的根层。