NSTabViewController - 如何创建自定义转换?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSTabViewController - 如何创建自定义转换?相关的知识,希望对你有一定的参考价值。
我有一个NSTabViewController
,附有6个标签(NSViewController
s)。从IB我可以从一些预定义的转换中选择,但我不喜欢它们中的任何一个。所以我的问题是:我如何进行自己的过渡?
PS:我在我的项目中使用StoryBoards。
答案
我使用以下方法取得了有限的成功(仍在寻找更好的解决方案,或者消除一些出现的视觉障碍)。
创建NSTabViewController
的子类,确保将故事板中的选项卡视图控制器的自定义类设置为新创建的子类。
默认情况下,NSTabViewController
在从一个选项卡视图项切换到另一个选项卡时进行以下三次调用:
tabView:willSelectTabViewItem:
transitionFromViewController:toViewController:options:completionHandler:
tabView:didSelectTabViewItem:
在自定义子类中,您可以覆盖transitionFromViewController:toViewController:options:completionHandler:
以实现自己的切换方法。
我使用过以下内容:
- (void)transitionFromViewController:(NSViewController *)fromViewController
toViewController:(NSViewController *)toViewController
options:(NSViewControllerTransitionOptions)options
completionHandler:(void (^)(void))completion {
NSWindow *window = self.view.window;
NSView *superview = fromViewController.view.superview;
[superview replaceSubview:fromViewController.view with:blankView()];
[window resizeToSize:toViewController.view.frame.size]; // category defined elsewhere
[superview replaceSubview:blankView() with:toViewController.view];
window.title = toViewController.title;
}
以上是关于NSTabViewController - 如何创建自定义转换?的主要内容,如果未能解决你的问题,请参考以下文章
手动实现 NSTabViewController 的 Rect Transition 及 Propagate Title-b