【问题标题】:UIImagePickerController pushing views up 20pxUIImagePickerController 将视图向上推 20px
【发布时间】:2012-04-20 14:17:11
【问题描述】:

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

    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,它控制视图A。视图A 还包含视图BCD。然后我将模态视图控制器X 推到视图控制器A 上,以显示带有上述代码的图像选择器控制器。当模态视图控制器X 被关闭时,视图控制器A 再次显示,视图A 完好无损,但视图BCD 向上移动了20px。 如何防止这种情况发生

【问题讨论】:

  • 20px 听起来像是状态栏问题。
  • @Chakalaka 我也这么认为。问题是如何解决它:)

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


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    我猜,当您添加 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

    【讨论】:

    • imagePickerController_ 设置为self.view.bounds 无效。另一方面,我不确定为什么属性会更好地用于此目的。
    • 设置imagePickerController_是指imagePickerController_.view.frame?对于调试我可以推荐NSLog(@"frame = %@, bounds = %@", NSStringFromCGRect(<#CGRect rect#>), NSStringFromCGRect(<#CGRect rect#>));我不记得确切,但看看属性self.wantsFullScreenLayout
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    相关资源
    最近更新 更多