【问题标题】:UIImagePickerController when dismissed pushes view to 20 px up in iOS 6.0 onlyUIImagePickerController 仅在 iOS 6.0 中被解除时将视图向上推至 20 px
【发布时间】:2016-12-09 06:32:53
【问题描述】:

编辑:我正在使用UIStoryBoard

我有这样的presented

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];

imagePicker.delegate = self;

imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; //| UIImagePickerControllerSourceTypeSavedPhotosAlbum ;
imagePicker.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage,nil];

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
    {
        imagePicker.allowsEditing = YES;
        [self.navigationController presentViewController:imagePicker animated:YES completion:^{

        }];  
    }
}

现在当dissmissed

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
   UIImage *image = info[UIImagePickerControllerEditedImage];
    NSLog(@"Image : %@",image);
    [self dismissViewControllerAnimated:YES completion:^{
    }];
}

现在view 变成了fiqure 中所示的样子:

EDIT:视图在关闭时被推到 20px。

编辑:这仅在 iOS 6.0 中

【问题讨论】:

  • 你在这个屏幕上有标签栏吗?还是您在任何地方设置视图框架?因为我也在我的应用程序中运行相同的代码,它工作正常。
  • 是的,我正在设置 [self.navigationController.view setBounds:CGRectMake(0, 0, 320, 480)];在 viewDidLoad 方法中
  • 蓝色部分是 UIView 还是导航栏?
  • 是的它的 UIImageView !!!!!!!
  • 我只在 iOS 6 中遇到过这些问题,而且还没有看到 iOS 7.0

标签: iphone ios objective-c uiimagepickercontroller


【解决方案1】:

原因是我设置了view controller 的框架,它在protrait mode 中,因为它的previous viewlandscape mode 中。

self.view.bounds = CGRectMake(0,0,...,...);

每当imagepicker dissmiss 得到calledmovedoriginal positionmentioned

现在在structure 中更改为orientation 无需在外部设置self.view 框架 solved 我的problem

【讨论】:

    【解决方案2】:

    如果视图的蓝色部分是自定义的UIView,那么您应该检查该视图的自动调整大小掩码。你会发现问题的。

    【讨论】:

      【解决方案3】:

      我有类似的问题,在我的情况下,状态栏高度为 20 像素。 因此,尝试在显示 imagePicker 之前将状态栏可见性设置为 NO,并在完成时设置 YES(在委托方法中)。

      类似这样的:

      [UIApplication sharedApplication].statusBarHidden = YES;
      [self.navigationController presentViewController:imagePicker animated:YES completion:^{
              }];
      
      
      -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
      {
         // ... your code here
         [UIApplication sharedApplication].statusBarHidden = NO;
         [self dismissViewControllerAnimated:YES completion:^{
          }];
      }
      

      【讨论】:

        【解决方案4】:

        我在 iOS 8.2 上遇到过类似问题。使用 UIImagePickerController 选择视频后,帧增加了 20px,视图控制器的顶部区域看起来不错,但底部被切断。 解决办法是:

        -(void)openPicker {}
            [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
            UIImagePickerController *picker = [[UIImagePickerController alloc] init];
            //configure image picker here
            [self presentViewController:picker animated:YES completion:NULL];
        }
        
        -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
            [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(showStatusBar) userInfo:nil repeats:NO];
            [picker dismissViewControllerAnimated:YES completion:NULL];
        }
        
        -(void)showStatusBar {
            dispatch_async(dispatch_get_main_queue(), ^{
                [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
            });
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-05-30
          • 2012-09-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-26
          • 2014-06-18
          相关资源
          最近更新 更多