objective-c – 图层支持视图和闪烁控件

objective-c – 图层支持视图和闪烁控件,第1张

概述我有一个包含NSBox控件的窗口.在那个NSBox是几个其他控件,(d出窗口,文本字段等…) 我在同一个NIB文件中有另外两个NSBox,这些文件中充满了我想在特定条件下与第一个交换的控件.我希望这会发生一个很好的交叉淡入淡出效果,所以我做了以下几点: 在NSWindowController的-awakeFromNib方法中: [[self.myWindow contentView] setWan 我有一个包含NSBox控件的窗口.在那个NSBox是几个其他控件,(d出窗口,文本字段等…)

我在同一个NIB文件中有另外两个NSBox,这些文件中充满了我想在特定条件下与第一个交换的控件.我希望这会发生一个很好的交叉淡入淡出效果,所以我做了以下几点:

在NSWindowController的-awakeFromNib方法中:

[[self.myWindow contentVIEw] setWantsLayer:YES];

在我正在切换视图的方法中,我使用以下代码:

[[[self.myWindow contentVIEw] animator] replaceSubvIEw:prevIoUsVIEw with:newVIEw];

这很好,视图交叉淡出就像我期望的那样.问题是对视图的控制有时会消失,没有明显的原因.它并不总是相同的视图(尽管NSPopUpbuttons似乎特别容易出现这种情况),并且它们通常在有焦点时重新出现.

我是否还必须支持所有控制层?

更新:在显式分组中包装动画没有任何区别.在Nib文件中打开setWantsLayer也没有什么区别,但有趣的是,当我这样做时,NSPopupbuttons消失,直到点击其包含视图.在NSPopupbuttons上手动设置Layer也没有什么区别.

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

http://www.cocoabuilder.com/archive/message/cocoa/2008/3/30/202691
http://www.cocoabuilder.com/archive/message/cocoa/2008/4/25/205134

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

[NSAnimationContext beginGrouPing];[[[self.myWindow contentVIEw] animator] replaceSubvIEw:prevIoUsVIEw with:newVIEw];[NSAnimationContext endGrouPing];

另外,你是否有理由调用setWantsLayer:在awakeFromNib中而不是仅仅在nib中设置它(NSVIEw检查器中应该有一个复选框).

总结

以上是内存溢出为你收集整理的objective-c – 图层支持视图和闪烁控件全部内容,希望文章能够帮你解决objective-c – 图层支持视图和闪烁控件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1011819.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存