1

我尝试使用 UIImagePickerController 从 iphone 图库中挑选照片。单击按钮时,我执行以下操作:

- (IBAction)attachAction:(id)sender {

    self.imagePicker = [[UIImagePickerController alloc] init];
    self.imagePicker.delegate = self;
    self.imagePicker.allowsEditing = YES;
    self.imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    [self presentModalViewController:self.imagePicker animated:YES];
}

在纵向它很好,但是当我旋转到横向时,呈现图像选择器并在做一些工作后将其关闭,父视图控制器的布局中断,我看到一半的屏幕带有父视图和另一半黑色矩形。

任何想法如何解决这个问题?imagePicker 关闭后,如何强制 uiviewcontroller 手动更改布局或其方向?

我尝试通过此代码处理旋转,但没有任何改变

    - (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

    - (BOOL)shouldAutorotate
{
    return YES;
}

    -(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [self.view setNeedsLayout];
}
4

3 回答 3

0

好吧,UIImagePickerController 只支持纵向模式。但是您需要使用以下属性来强制执行横向行为。@property (nonatomic, retain) UIView *cameraOverlayView 讨论 您可以使用覆盖视图在默认图像选择器界面的顶部呈现自定义视图层次结构。图像选择器将您的自定义覆盖视图分层放置在其他图像选择器视图之上,并将其相对于屏幕坐标定位。如果您将默认相机控件设置为可见,请将透明度合并到您的视图中,或将其放置以避免遮挡底层内容。

您也可以按照此链接在 UIImagePickerController 中强制横向方向

于 2013-10-15T11:31:29.817 回答
0

我发现了问题。我在这个 VC 之前有 UITabBarController,我忘了实现

- (BOOL)shouldAutorotate
{
    return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

子类化 UITabBarController 并添加这些方法解决了问题。感谢您的建议!

于 2013-10-16T10:56:47.630 回答
0

如果您旋转 modalView,当呈现控制器不处理旋转时,就会发生这种情况。

尝试添加

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait; 
}

在此类中,它应该在模式视图被关闭时正确替换视图

于 2013-10-15T11:06:32.387 回答