ind*_*gie 7 cocoa objective-c fade nswindow
我正在使用Matt Gemmell的MAAttachedWindow(http://mattgemmell.com/source)和NSStatusItem在菜单栏中显示自定义视图.我很困惑如何让它淡入淡出.通常我会做这样的事情:
[window makeKeyAndOrderFront:self];
[[window animator] setAlphaValue:1.0];
Run Code Online (Sandbox Code Playgroud)
并淡出:
[[window animator] setAlphaValue:0.0];
Run Code Online (Sandbox Code Playgroud)
但是这个代码似乎对MAAttachedWindow没有影响.有任何想法吗?
谢谢
很抱歉打破了一个旧帖子,但我认为值得一提的是,我可以直接设置alpha值,而无需添加访问者/获取者.
简单地做(取决于您的设置或课程):
[[self window] addChildWindow:attachedWindow ordered:NSWindowAbove];
[attachedWindow setAlphaValue:0.0];
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:0.5];
[attachedWindow makeKeyAndOrderFront:self];
[[attachedWindow animator] setAlphaValue:1.0];
[NSAnimationContext endGrouping];
Run Code Online (Sandbox Code Playgroud)
工作得很好.
小智 5
我不是特别精通CoreAnimation和隐式动画的使用.但是,我能够通过向MAAttachedWindow类添加一个显式的alphaValue属性来使MAAttachedWindow淡入淡出:
@interface MAAttachedWindow : NSWindow {
CGFloat _alphaValue;
...
}
-(CGFloat) alphaValue;
-(void) setAlphaValue:(CGFloat)windowAlpha;
...
@implementation MAAttachedWindow
- (CGFloat) alphaValue {
return _alphaValue;
}
- (void) setAlphaValue:(CGFloat)windowAlpha {
_alpha = windowAlpha;
[super setAlphaValue:windowAlpha];
}
...
Run Code Online (Sandbox Code Playgroud)
通过添加,我能够使setAlphaValue的隐式动画工作:
(下面的代码来自Matt的样本"NSStatusItemTest"代码)
- (void)toggleAttachedWindowAtPoint:(NSPoint)pt
{
...
[attachedWindow makeKeyAndOrderFront:self];
[[attachedWindow animator] setAlphaValue:1.0];
Run Code Online (Sandbox Code Playgroud)
我不确定为什么显式定义alphaValue属性有效.我希望可以为隐式动画调用NSWindow的继承版本.但它似乎并不存在.
| 归档时间: |
|
| 查看次数: |
2107 次 |
| 最近记录: |