路径幻灯片菜单TTNavigator

时间:2012-03-06 13:06:24

标签: ios5 three20

我在应用程序上使用three20,我想使用在Path和Facebook上使用的这种菜单:

path app slide menu

我的应用程序使用TTNavigator网址方案非常密集,似乎TTNavigator就像对窗口进行独占控制一样。所以我没有两个视图控制器可以玩。

有什么方法可以将TTNavigator添加到视图控制器并在另一个上创建我的菜单?

2 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案:

SMMenu * smmenu = [[SMMenu alloc] init];
[self.window addSubview: smmenu.view];
[self.window addSubview: navigator.window];
[self.window makeKeyAndVisible];

只需按下如下按钮navigator.window即可向左移动[navigator.window setLeft:250],它将在后面显示视图,所有导航器都将在前视图中工作。 / p>

好。不幸的是,现在我丢失了键盘视图.. :)

答案 1 :(得分:0)

使用Tom Adriaenssen出色的ViewDeck实现,您可以拥有类似Path的滑动左侧视图控制器:

ViewDeck on GitHub

在您的应用中,设置navigator.window时,请勿传递窗口。传递自定义UIViewController的UIView(您将在ViewDeck中设置为“中央”视图控制器的那个:

navigator.window=(UIWindow*)myCentralViewController.view;

这会欺骗three20的TTNavigator,认为它已经成功接管了你的窗口,而事实上,它只是一个视图。但请注意,您可能需要对该视图进行子类化并实现空的UIWindow方法,例如:

- (void)makeKeyAndVisible{}

..因为three20的TTNavigator仍然认为这是你的主UIWindow并期望你的对象响应常见的UIWindow选择器。

这是一个未知的领域,它肯定是一个可能会产生意想不到的后果的黑客攻击。

您可能需要在“假窗口”框架上设置负y,以补偿状态栏。 e.g:

[[MYFakeWindow alloc] initWithFrame:CGRectMake(0, -20, 320, 480)];

再次,小心。我在一个应用程序中使用这个hack,它表现得非常好,但你仍然在与三十框架作斗争,所以要确保它不会反击。