0

我的项目在它使用的几个地方都有现有代码,navigationController.view.superview.framenavigationController.view.superview.center在当前视图的顶部调整和居中模式视图。当然,我可以将它们用作样板,但老实说,我不知道navigationController.view.superview真正指的是什么。是特别的UINavigationControllers吗?任何想法/意见将不胜感激。

[编辑] 这是代码:

UIStoryboard *sb = self.storyboard;
MyViewController *vc = (MyViewController *)[sb instantiateViewControllerWithIdentifier:@"MyLoginViewController"];
vc.delegate= self;
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:vc];
navController.modalPresentationStyle = UIModalPresentationFormSheet;

[self.navigationController presentModalViewController:navController animated:YES];

navController.view.superview.frame = CGRectMake(
                                                navController.view.superview.frame.origin.x,
                                                navController.view.superview.frame.origin.y,
                                                400.0f,
                                                400.0f
                                                );
navController.view.superview.center = self.view.center;

如果我不为新的模态视图使用导航控制器,我就不必使用“superview”。即,

UIStoryboard *sb = self.storyboard;
MyViewController *vc = (MyViewController *)[sb instantiateViewControllerWithIdentifier:@"MyLoginViewController"];
vc.delegate= self;

[self.navigationController presentModalViewController:vc animated:YES];

vc.view.frame = CGRectMake(
                                                vc.view.frame.origin.x,
                                                vc.view.frame.origin.y,
                                                400.0f,
                                                400.0f
                                                );
vc.view.center = self.view.center;

但是,我将无法在后台查看呈现的 vc ......

4

3 回答 3

1
  • navigationController- 这很可能是一个UINavigationController. 我说可能是因为您没有提供任何上下文,所以我只能从名称中假设。

  • navigationController.view- 导航控制器的视图。

  • navigationController.view.superview- 导航控制器的视图的超级视图。即导航控制器视图所在的视图。

  • navigationController.view.superview.frame- 导航控制器的视图的超级视图的框架。即导航控制器的视图所在的视图的框架(位置和大小)。

  • navigationController.view.superview.center- 导航控制器视图的超级视图中心。即导航控制器视图所在视图的中心(中心点的位置)。

像这样直接使用这些属性是很难看的。我无法想象你为什么要像那样深入到视图层次结构的深处来做任何事情。这对我来说是一种难闻的气味。我建议找到解决问题的正确方法。

于 2012-10-22T19:12:21.423 回答
1

在大多数情况下,这可能是指您的UIWindow. 如果您想在屏幕上居中,您可以使用[UIScreen mainScreen].applicationFrame.

于 2012-10-22T19:12:43.490 回答
0

正如UIView 的文档中所解释的,该方法-superview返回视图层次结构中的视图的超级视图。也就是说,超级视图是包含导航控制器视图的视图。这不是特定于 UINavigationController。

于 2012-10-22T19:12:20.400 回答