gpt4 book ai didi

objective-c - 用 Core Animation 替换 NSSplitView subview

转载 作者:行者123 更新时间:2023-12-03 17:15:38 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何在垂直配置的 2 View NSSplitView 中设置动画切换(替换) subview 。我在 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 推开的效果,而不仅仅是拆分右侧的 subview 。

有没有办法只为 subview 过渡设置动画?也许我使用了错误的动画键(“ subview ”)?其他动画方法也可以。

谢谢!

最佳答案

这可能不是最干净的方法,但我最终使用了 NSView 'container' 子类以及自定义 addSubview:replaceSubview:withView: 方法来修改新 subview 的框架以匹配容器 View 的框架,然后将其构造为我想要设置动画的 NSSplitView subview 。然后我在容器 View 上设置 CATransition,一切都按我想要的方式工作。

关于objective-c - 用 Core Animation 替换 NSSplitView subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7304303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com