运行Cocoa动画后,NSWindow阴影消失

时间:2014-03-13 12:23:22

标签: objective-c macos cocoa autolayout nswindow

请注意以下gif。你看到的是我点击一个滑出表格视图的披露按钮。到现在为止还挺好。当我隐藏并重新打开表视图时,您将看到窗口的阴影消失。这不是故意的。当我再次隐藏表格视图时,阴影会重新出现。

enter image description here

我使用以下代码来实现此效果:

- (void) showListView {

    NSView * listView = self.listViewController.view;
    NSView * timerView = self.timerViewController.view;
    timerView.layer.backgroundColor = [NSColor windowBackgroundColor].CGColor;

    [self.view addSubview:listView positioned:NSWindowBelow relativeTo:nil];

    self.listViewEdgesToEdgesOfSuperviewConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[listView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(listView)];
    [self.view addConstraints:self.listViewEdgesToEdgesOfSuperviewConstraints];

    [NSAnimationContext runAnimationGroup:^(NSAnimationContext *ctx) {
        self.timerViewBottomToSuperViewConstraint.animator.constant += listView.frame.size.height;
    } completionHandler:^{

    }];


}

- (void) hideListView {

    NSView * listView = self.listViewController.view;

    // Animate the disappearance of the list view
    [NSAnimationContext runAnimationGroup:^(NSAnimationContext * context){
        self.timerViewBottomToSuperViewConstraint.animator.constant = 0;

    } completionHandler:^{

        [self.view removeConstraints:self.listViewEdgesToEdgesOfSuperviewConstraints];
        [listView removeFromSuperview];

    }];



}

有谁知道为什么会这样,以及如何解决这个问题以便阴影显示?我没有尝试过任何我可以分享的解决方案,因为我不知道该做什么。

我很乐意提供您需要的任何其他信息。

编辑:上传了一个更好地说明问题的新gif。

0 个答案:

没有答案