Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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 分层视图和闪烁控件_Objective C_Cocoa_Core Animation - Fatal编程技术网

Objective c 分层视图和闪烁控件

Objective c 分层视图和闪烁控件,objective-c,cocoa,core-animation,Objective C,Cocoa,Core Animation,我有一个包含NSBox控件的窗口。该框中还有其他几个控件(弹出窗口、文本字段等) 在同一个NIB文件中,我还有另外两个NSBox,其中填充了一些控件,在某些条件下,我想用第一个替换它们。我希望这种情况发生时具有良好的交叉淡入效果,因此我执行以下操作: 在NSWindowController的-awakeFromNib方法中: [[self.myWindow contentView] setWantsLayer:YES]; 在切换视图的方法中,我使用以下代码: [[[self.myWindow

我有一个包含NSBox控件的窗口。该框中还有其他几个控件(弹出窗口、文本字段等)

在同一个NIB文件中,我还有另外两个NSBox,其中填充了一些控件,在某些条件下,我想用第一个替换它们。我希望这种情况发生时具有良好的交叉淡入效果,因此我执行以下操作:

在NSWindowController的
-awakeFromNib
方法中:

[[self.myWindow contentView] setWantsLayer:YES];
在切换视图的方法中,我使用以下代码:

[[[self.myWindow contentView] animator] replaceSubview:previousView with:newView];
这一切都很好,正如我所预期的那样,视野会逐渐变暗。问题是视图上的控件有时会无缘无故地消失。视图并不总是相同的(尽管NSpoupButtons似乎特别倾向于使用相同的视图),它们通常在有焦点时重新出现

我是否也必须使所有控件层都备份


更新:在显式分组中包装动画没有任何区别。在Nib文件中启用setWantsLayer也没有什么不同,但有趣的是,当我这样做时,NSpopupButton将消失,直到单击其包含的视图为止。在NSPoupButtons上手动设置图层也没有什么不同

似乎其他人也有这个问题,但我找不到任何解决方案:


如果视图是图层备份的,则其所有子视图都将是图层备份的,因此无需手动将其设置为图层备份。我不知道是否有足够的信息来了解这里发生了什么,但我很好奇如果你将动画包装在一个明确的分组中,是否会得到不同的行为:

[NSAnimationContext beginGrouping];
[[[self.myWindow contentView] animator] replaceSubview:previousView with:newView];
[NSAnimationContext endGrouping];

另外,您调用setWantLayer:in awakeFromNib而不是在nib中设置它(在NSView检查器中应该有一个复选框)的原因是什么。

I也遇到了NSpoupButtons和CALayers的问题,并且还没有找到合适的解决方案。