如何为自定义NSWindow设置动画

时间:2011-08-03 10:30:43

标签: objective-c cocoa core-animation

我在为自定义的NSWindow制作动画时遇到了一些麻烦。

这是我的init方法:

- (CustomWindow *)initWithView:(NSView *)view
{
    if ((self = [super initWithContentRect:contentRect
                                 styleMask:NSBorderlessWindowMask 
                                   backing:NSBackingStoreBuffered 
                                     defer:NO])) {

        [[self contentView] addSubview:view];

        [self setBackgroundColor:[NSColor darkGrayColor]];
        [self setMovableByWindowBackground:YES];
        [self setExcludedFromWindowsMenu:YES];
        [self setOpaque:NO];
        [self setHasShadow:YES];
        [self setDelegate:self];
    }
    return self;
}

当我调用[self setFrame:originalFrame display:NO animate:YES];时,会有一个与动画持续时间相对应的延迟,但动画本身不会发生。

我认为这是因为我使用的是无边框窗口?

2 个答案:

答案 0 :(得分:1)

只需使用:[self setFrame:originalFrame display:YES animate:YES];

答案 1 :(得分:0)

猜猜您的窗口已调整大小,但查看您添加到内容视图,请不要。如果您只有一个视图,则代替:

[[self contentView] addSubview:view];

使用:

[self setContentView:view];