cocoa - 切换 XIB View - Cocoa Mac

标签 cocoa macos sdk xib

我对编码还很陌生,想知道如何通过单击按钮切换 XIB View 。切换时是否还可以添加动画?

谢谢

凯文

最佳答案

这是完全可能的,但您需要做一些事情。我想您已经熟悉将 socket 连接到 XIB 中的对象,因此您需要做的第一件事是在 XIB 中创建自定义 View 并将它们连接到 appDelegate 中的 socket 。我建议将其中一个 View 拖到窗口中,将一个 View 拖到窗口外。这样,当窗口加载时,它已经将您的自定义 View 之一作为 subview 。这只会让入门变得更容易。

然后您将在 appDelegate 中编写一个 IBAction 并将其连接到您的按钮。假设其中一个自定义 View 已由窗口托管,则 IBAction 应向窗口的 contentView 动画制作器发送一条 ReplaceSubviewWith 消息,如下所示 [[window.contentView animator] ReplaceSubview:firstView with:secondView]; 其中,firstView 和 secondaryView 是您声明并连接到 XIB 中 View 的指针/导出。

这会向窗口内容 View 的动画代理发送一条消息,告诉它用新 subview 替换旧 subview 。将消息发送到 View 的动画代理(而不是 View 本身)的原因是过渡将使用默认的 CATransitionAnimation 进行。因为你希望它是动画的,对吗?

您不应该删除一个 subview 然后添加另一个 subview 的原因是因为以动画方式删除 subview 实际上非常棘手,并且需要实现委托(delegate)方法animationDidEnd。这是因为在已从 View 层次结构中删除的 View 上执行动画是没有意义的。我不知道为什么苹果没有改变这一点,但目前这将是 CoreAnimation 持久的怪癖之一。

请告诉我这是否有帮助。我很高兴澄清!欢迎来到 cocoa !

关于cocoa - 切换 XIB View - Cocoa Mac,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4530608/

相关文章:

ios - 询问是否仍在播放由应用加载并启动的声音的iOS API方法

Swift 多次 #available 检查 2 个版本的 SDK 中的错误

java - 我可以将 JavaScript 与 Java SDK 一起使用吗?

objective-c - 动画自定义 NSView 绘图

iphone - 具有可变内容的可滚动 iPhone "detail view"的最佳布局是什么?

macos - 如何让 Cocoa 检测 USB 网络摄像头设备

macos - NSCollectionView 或 NSTableView 自动调整单元格高度

swift - Mac OS 应用程序中用户选择的文件夹的读写权限?

cocoa - 如何将菜单项添加到 NSTextField 的上下文菜单中

python - PyInstaller 打包 Flask 应用程序无法加载 Python 库,dlopen -> 找不到图像