gpt4 book ai didi

iphone - 如何正确使用方法 "sendSubviewToBack"?

转载 作者:可可西里 更新时间:2023-11-01 03:18:53 26 4
gpt4 key购买 nike

我已经实现了滑动菜单,但是我想要和 facebook 完全一样的滑动效果。我在 stackoverflow 上看到了以下帖子:

iphone facebook side menu using objective c

我想在其中实现 greenisus 给出的解决方案(投票 15 次),但我在实现时遇到了麻烦,Bot 在对他的回答的评论中提出了同样的问题。“@greenisus 我对你如何将菜单发送到后面感到困惑?当我这样做时,它只显示一个黑色的侧边菜单。”尚未得到答复。

他的回答供引用的文本是:

其实很简单。首先,您需要制作一个位于可见 Controller 下方的 View Controller 。您可以像这样将该 View 发送到后面:

[self.view sendSubviewToBack:menuViewController.view];

然后,您将一个菜单按钮放在导航栏的左侧,并编写一个类似这样的处理程序:

- (void)menuButtonPressed:(id)sender {
CGRect destination = self.navigationController.view.frame;
if (destination.origin.x > 0) {
destination.origin.x = 0;
} else {
destination.origin.x += 254.5;
}
[UIView animateWithDuration:0.25 animations:^{
self.navigationController.view.frame = destination;
} completion:^(BOOL finished) {
self.view.userInteractionEnabled = !(destination.origin.x > 0);
}];
}

这是总体思路。您可能必须更改代码以反射(reflect)您的 View 层次结构等。

只是想知道什么时候我们必须使用下面的方法,第二种方法简单而且工作正常,但不显示其下的菜单 View 。

[self.view sendSubviewToBack:menuViewController.view];

寻找一些指针或解决方案来正确运行上述代码。

最佳答案

其实你应该知道我们该怎么做。只需添加 menuViewController.view 作为 self.view 的 subview 。但这会覆盖 navigationController.view,所以你可以 [self.view sendSubviewToBack:menuViewController.view]。当您需要显示/隐藏 menuViewController 时,您需要使用方法 - (void)menuButtonPressed:(id)sender。

在 HomeViewController 中:

- (void)viewDidLoad
{
[super viewDidLoad];
// be careful with the sequence of the code. If you firstly add the contentViewController and then add the
// menuViewController you need to [self.view sendSubviewToBack:self.menuViewController.view], else you don't
// need to use sendSubviewToBack.
self.menuViewController = [[MenuViewController alloc] init];
self.contentViewController = [[ContentViewController alloc] init];
[self.view addSubview:self.menuViewController.view];
[self.view addSubview:self.contentViewController.view];
}

在 ContentViewController 中:

- (IBAction)showMenu:(id)sender
{
CGRect destination = self.view.frame;
if (destination.origin.x > 0) {
destination.origin.x = 0;
} else {
destination.origin.x += 254.5;
}
[UIView animateWithDuration:0.25 animations:^{
self.view.frame = destination;
} completion:^(BOOL finished) {
//self.view.userInteractionEnabled = !(destination.origin.x > 0);
}];
}

关于iphone - 如何正确使用方法 "sendSubviewToBack"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12017675/

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