首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用核心动画替换NSSplitView子视图

用核心动画替换NSSplitView子视图
EN

Stack Overflow用户
提问于 2011-09-05 13:54:43
回答 1查看 773关注 0票数 1

我正在尝试弄清楚如何在垂直配置的双视图NSSplitView中为切换(替换)子视图提供动画效果。我在我的NSSplitView子类中使用了以下方法使其处于半工作状态:

要设置动画,请执行以下操作:

代码语言:javascript
复制
- (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"]];
}

并执行它:

代码语言:javascript
复制
- (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")?其他动画方法也可以。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-22 09:25:44

这可能不是最干净的方式,但我最终使用了一个带有自定义addSubview:replaceSubview:withView:方法的NSView“容器”子类,这些方法修改新子视图的框架以匹配容器视图的框架,然后将其结构化为我想要动画的NSSplitView子视图。然后,我在容器视图上设置了CATransition,一切都如我所愿。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7304303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档