gpt4 book ai didi

cocoa - Mac应用程序中轻松切换 "View Controllers"(与iOS类似)

转载 作者:行者123 更新时间:2023-12-03 16:08:10 25 4
gpt4 key购买 nike

我有 iOS 背景,是 Mac OSX(coco 应用程序)开发的新手。

以苹果示例代码项目“Simple Cocoa App ”为基础,我希望能够以与 iOS 应用程序类似的任何方式在不同的“ View Controller ”之间切换,甚至只是在 NSView 之间切换。

不幸的是,我找不到实现此目的的方法 - 并且互联网相当缺乏与“cocoa 应用程序中的 View 切换、mac 应用程序中的 View 切换、mac 应用程序开发教程”等关键字相关的资源...

你们中有人知道有一个教程吗?(这里是重点)实际上涵盖了 View 之间切换的问题?或者也许知道您可以在 Stack Overflow 答案中解释的任何快速方法?

概念验证
一个非常简单的概念验证可能如下。在一个简单的应用程序中,有两个 View - 屏幕 1(当前显示)和屏幕 2(隐藏在屏幕外):

第 1 步)启动应用程序,屏幕 1 出现(包含标签“Screen 1”和按钮“Go Next”)
步骤 2) 按下按钮
步骤 3) 屏幕 1 滑出屏幕
步骤 4) 屏幕 2 滑入(包含单个标签“屏幕 2”)

谢谢。

最佳答案

核心动画在 OS X 中的集成程度并不像在 iOS 上那样深入。因此,您需要自己做很多事情。您可以做的是使用窗口的 contentView 作为 super View ,然后执行以下操作以切换到另一个 View (动画)。

- (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];
}

然而,这不会给你带来你想要的效果。如果您希望它具有某种移动效果,您必须包含 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];
}

然后在 switchSubViews 中:你只需使用:

[[mainView animator] addSubView:newSubView];

关于cocoa - Mac应用程序中轻松切换 "View Controllers"(与iOS类似),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4849639/

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