Objective c 用核心动画替换NSSplitView子视图
我试图弄清楚如何在垂直配置的2视图NSSplitView中设置切换(替换)子视图的动画。我在NSSplitView子类中使用以下方法使其半工作: 要设置动画,请执行以下操作:Objective c 用核心动画替换NSSplitView子视图,objective-c,cocoa,core-animation,nssplitview,Objective C,Cocoa,Core Animation,Nssplitview,我试图弄清楚如何在垂直配置的2视图NSSplitView中设置切换(替换)子视图的动画。我在NSSplitView子类中使用以下方法使其半工作: 要设置动画,请执行以下操作: - (void)awakeFromNib { // set delegate [self setWantsLayer:YES]; CATransition *transition = [CATransition animation]; [transition setType:kCATrans
- (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推离,而不仅仅是拆分右侧的子视图
是否有一种方法可以仅为子视图过渡设置动画?也许我使用了错误的动画关键点(“子视图”)?其他动画方法也可以
谢谢 这可能不是最干净的方法,但我最终使用了一个NSView“container”子类,该子类具有自定义的
addSubview:
和replaceSubview:withView:
方法,这些方法修改新子视图的帧以匹配容器视图的帧,然后将其结构化到我想要设置动画的NSSplitView子视图中。然后,我在容器视图上设置了CATTransition,一切都按照我的要求进行了。这可能不是最干净的方法,但我最终使用了一个NSView“container”子类,它带有自定义的addSubview:
和replaceSubview:withView:
方法,可以修改新子视图的框架以匹配容器视图的框架,然后将其结构化到我想要设置动画的NSSplitView子视图中。然后我在container视图上设置了CATTransition,一切都按照我的要求进行了