3

我有一个模态视图控制器,其中包含:

    imagePickerController_ = [[UIImagePickerController alloc] init];
    imagePickerController_.delegate = (id)self;
    imagePickerController_.sourceType = UIImagePickerControllerSourceTypeCamera;
    imagePickerController_.view.frame = CGRectMake(0.0f, -20.0f, 320.0f, 480.0f);
    [self.view addSubview:imagePickerController_.view];

您会注意到我不得不手动将视图向上移动 20 像素,因为由于某种原因它坐得太低了。

当我关闭模态视图控制器时,下面视图控制器的视图中包含的所有视图都被推高 20 像素(即使视图本身保持相同的原始坐标)。

换句话说,我有一个A控制 view的视图控制器A。视图还A包含视图B和。然后我将模态视图控制器推到视图控制器上,以显示带有上述代码的图像选择器控制器。当模态视图控制器被关闭时,视图控制器再次显示,视图完好无损,但是 views和向上移动了 20px。我怎样才能防止这种情况发生CDXAXAABCD

4

2 回答 2

1

我发现了问题所在。不幸的是,很难从我的帖子中看到错误。

我将它imagePickerController放在另一个以模态方式呈现的视图控制器中。我现在直接以模态方式呈现imagePickerController.

imagePickerController_ = [[UIImagePickerController alloc] init];
imagePickerController_.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePickerController_.delegate = (id)self;
[self presentModalViewController:imagePickerController_ animated:YES]; 

很抱歉给您带来麻烦。我希望这可以帮助其他人不要犯同样的错误!

于 2012-04-23T16:06:08.293 回答
0

我想,当您添加时,imagePickerController_您需要将其框架设置为 A viewController 的边界。喜欢imagePickerController_.view.frame = self.view.bounds


您可以在View and Window Architecture中找到有关视图坐标系的更多信息。

还阅读了有关命名约定的信息,命名imagePickerController_很奇怪。可能是你的意思_imagePickerController。我认为最好为此目的使用属性。所以用self.imagePickerController.

另请查看Presenting View Controllers from Other View Controllers

于 2012-04-20T20:11:13.517 回答