2

これが私のコードです:

- (IBAction)showTaskDetailView:(id)sender {
    [window setContentView:viewTaskView];
}

現在のビューをフェードアウトして詳細ビューをフェードインするにはどうすればよいですか?

4

2 に答える 2

1

ここにあるサンプルコード(わずかに微調整):

- (void)crossFadeWithOld:(NSView *)oldView andNew:(NSView *)newView
{
    [window setContentView:newView];

    NSDictionary *oldFadeOut = nil;
    if (oldView != nil) {
        oldFadeOut = [NSDictionary dictionaryWithObjectsAndKeys:
                      oldView, NSViewAnimationTargetKey,
                      NSViewAnimationFadeOutEffect,
                      NSViewAnimationEffectKey, nil];
    }
    NSDictionary *newFadeIn;
    newFadeIn = [NSDictionary dictionaryWithObjectsAndKeys:
                 newView, NSViewAnimationTargetKey,
                 NSViewAnimationFadeInEffect,
                 NSViewAnimationEffectKey, nil];

    NSArray *animations;
    animations = [NSArray arrayWithObjects:
                  newFadeIn, oldFadeOut, nil];

    NSViewAnimation *animation;
    animation = [[NSViewAnimation alloc]
                 initWithViewAnimations: animations];

    [animation setAnimationBlockingMode: NSAnimationBlocking];
    [animation setDuration: 0.5]; // or however long you want it for

    [animation startAnimation]; // because it's blocking, once it returns, we're done

    [animation release];    

}
于 2011-06-24T18:25:04.550 に答える
1

コンテンツビューを変更しないでください。両方のビューを同じコンテンツビューに配置し、 NSViewAnimationを使用して一方をフェードアウトし、もう一方をフェードインします。

于 2009-12-19T06:04:30.400 に答える