1

垂直に構成された2ビューNSSplitViewでサブビューの切り替え(置換)をアニメーション化する方法を理解しようとしています。NSSplitViewサブクラスで次のメソッドを使用して半ば機能しています。

アニメーションを設定するには:

- (void)awakeFromNib {
    // set delegate
    [self setWantsLayer:YES];
    CATransition *transition = [CATransition animation];
    [transition setType:kCATransitionPush];
    [transition setSubtype:kCATransitionFromBottom];
    [transition setDuration:1.0];
    [self setAnimations:[NSDictionary dictionaryWithObject:transition
                                                    forKey:@"subviews"]];
}

そしてそれを実行するには:

- (void)replaceRightView:(NSView *)newView animated:(BOOL)animate {
    NSRect currentSize = [[[self subviews] objectAtIndex:1] frame];
    [newView setFrame:currentSize];

    if (animate) {
        [[self animator] replaceSubview:[[self subviews] objectAtIndex:1]
                                   with:newView];
    } else {
        [self replaceSubview:[[self subviews] objectAtIndex:1]
                        with:newView];
    }
}

ただし、このコードには、分割の右側にあるサブビューだけでなく、NSSplitView全体をプッシュする効果があります。

サブビューの遷移だけをアニメーション化する方法はありますか?おそらく私は間違ったアニメーションキー(「サブビュー」)を使用していますか?他のアニメーション方法でも問題ありません。

ありがとう!

4

1 に答える 1

1

これはおそらく最もクリーンな方法ではありませんが、NSView'container'サブクラスをカスタムaddSubview:replaceSubview:withView:メソッドで使用して、新しいサブビューのフレームをコンテナービューのフレームと一致するように変更し、アニメーション化するNSSplitViewサブビューに構造化することになりました。次に、コンテナビューでCATransitionを設定すると、すべてが希望どおりに機能しました。

于 2011-09-22T01:25:43.727 に答える