m0r*_*mer 6 macos cocoa nsview
我来自iOS背景,是Mac OSX(coco app)开发的新手.
从Apple示例代码项目" Simple Cocoa App "开始,我希望能够以任何类似于iOS应用程序的方式在不同的"View Controllers"之间切换,甚至只在NSView之间切换.
不幸的是,我无法找到实现这一目标的方法 - 互联网缺乏与关键词相关的资源,例如"在可可应用中查看切换,在mac应用程序中切换视图,mac app dev教程"......
你们中的任何人都知道一个教程,而这里是踢球者,实际上涵盖了在视图之间切换的问题吗?或者也许知道你可以在Stack Overflow答案中解释的任何快速方法?
概念证明
一个非常简单的概念验证可能如下.在一个简单的应用程序中,有两个视图 - 屏幕1(当前显示)和屏幕2(隐藏屏幕外):
步骤1)启动应用程序,出现屏幕1(包含标签"屏幕1"和按钮"转到下一步")
步骤2)按下按钮
步骤3)屏幕1滑动屏幕作为
步骤4)屏幕2滑入(包含单个标签"屏幕2")
谢谢.
Ant*_*udt 17
Core Animation并没有像在iOS上那样深入集成在OS X中.因此,您需要自己做很多事情.你可以做的是使用窗口的contentView作为超级视图,然后执行以下操作切换到另一个视图(动画).
- (void)switchSubViews:(NSView *)newSubview
{
NSView *mainView = [[self window] contentView];
// use a for loop if you want it to run on older OS's
[mainView removeAllSubViews];
// fade out
[[mainView animator] setAplhaValue:0.0f];
// make the sub view the same size as our super view
[newSubView setFrame:[mainView bounds]];
// *push* our new sub view
[mainView addSubView:newSubView];
// fade in
[[mainView animator] setAlphaValue:1.0f];
}
Run Code Online (Sandbox Code Playgroud)
但是,这不会给你你想要的效果.如果你想让它给它一个sorta 移动效果你必须包括QuartzCore.framework并执行以下操作:
- (void)prepareViews
{ // this method will make sure we can animate in the switchSubViewsMethod
CATransition *transition = [CATransition animation];
[transition setType:kCATransitionPush];
[transition setSubtype:kCATransitionFromLeft];
NSView *mainView = [[self window] contentView];
[mainView setAnimations:[NSDictionary dictionaryWithObject:transition forKey:@"subviews"]];
[mainView setWantsLayer:YES];
}
Run Code Online (Sandbox Code Playgroud)
然后在switchSubViews中:你只需要使用:
[[mainView animator] addSubView:newSubView];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9261 次 |
| 最近记录: |