我有一个模态视图控制器,包含:
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
还包含视图B
,C
和D
。然后我将模态视图控制器X
推送到视图控制器A
上,以显示带有上述代码的图像选取器控制器。当模态视图控制器X
被取消时,视图控制器A
会再次显示,视图A
保持不变,但视图B
,C
和D
是向上移动了20px。 如何防止这种情况发生??
答案 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。