UIImagePickerController将视图推高20px

时间:2012-04-20 14:17:12

标签: iphone objective-c cocoa-touch uiimagepickercontroller modalviewcontroller

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

    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];

您会注意到我必须手动将视图向上移动20px,因为由于某种原因它太低了。

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

换句话说,我有一个控制视图A的视图控制器A。视图A还包含视图BCD。然后我将模态视图控制器X推送到视图控制器A上,以显示带有上述代码的图像选取器控制器。当模态视图控制器X被取消时,视图控制器A会再次显示,视图A保持不变,但视图BCD是向上移动了20px。 如何防止这种情况发生?

2 个答案:

答案 0 :(得分:1)

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

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

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

抱歉麻烦。我希望这有助于其他人不要犯同样的错误!

答案 1 :(得分:0)

我想,当你添加imagePickerController_时,你需要将它的框架设置为A viewController的边界。与imagePickerController_.view.frame = self.view.bounds一样。


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

另请阅读naming conventions,命名imagePickerController_非常奇怪。可能是你的意思_imagePickerController。我认为最好将properties用于此目的。因此,请使用self.imagePickerController访问它。

另请查看Presenting View Controllers from Other View Controllers