我正在尝试弄清楚如何在垂直配置的双视图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,而不仅仅是拆分右侧的子视图。
有没有一种方法可以只动画子视图过渡?也许我用错了动画键("subviews")?其他动画方法也可以。
谢谢!
发布于 2011-09-22 09:25:44
这可能不是最干净的方式,但我最终使用了一个带有自定义addSubview:和replaceSubview:withView:方法的NSView“容器”子类,这些方法修改新子视图的框架以匹配容器视图的框架,然后将其结构化为我想要动画的NSSplitView子视图。然后,我在容器视图上设置了CATransition,一切都如我所愿。
https://stackoverflow.com/questions/7304303
复制相似问题