【问题标题】:UIImagePickerController in UINavigationControllerUINavigationController 中的 UIImagePickerController
【发布时间】:2015-08-14 21:35:21
【问题描述】:

Guyz,我在UINavigationController 中显示UIImagePickerController,但图像选择器控制器的某些框架隐藏在导航栏下。是否有任何 Body 有解决方案,代码是

picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    picker.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil];
    //[picker.view setFrame:CGRectMake(0,50, 800, 600)];
    self.nv=[[UINavigationController alloc]init];
    [self.nv.view setFrame:(CGRectMake(0, 50, 320.0, 400.0))];
    // 4. add the nav bar to the main view
    [self.nv addChildViewController:picker];
    [picker didMoveToParentViewController:self.nv];
    picker.view.frame = CGRectMake(15, 50, 290, 400);
    popoverController = [[UIPopoverController alloc] initWithContentViewController:self.nv];
    [popoverController presentPopoverFromRect:[(UIButton *)sender frame]
                                       inView:self.view
                     permittedArrowDirections:UIPopoverArrowDirectionAny
                                     animated:YES];

【问题讨论】:

  • UIImagePickerController 本身就是一个UINavigationController,所以你不应该把它换成另一个UINavigationController
  • 我知道了,然后告诉替代方案
  • 直接将其添加到弹出框而不将其包装在导航控制器中。

标签: ios objective-c ipad uinavigationcontroller uiimagepickercontroller


【解决方案1】:

试试这个替代方案。 :)

#define ISIPHONE [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone
UIPopoverController *popover;

- (IBAction)openImagePicker:(UIButton *)sender
{
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; //UIImagePickerControllerSourceTypeCamera
    if (ISIPHONE)
    {
        [self presentViewController:picker animated:YES completion:NULL];
    }
    else
    {
        if (!popover)
        {
            popover = [[UIPopoverController alloc] initWithContentViewController:picker];
        }
        [popover presentPopoverFromRect:sender.bounds inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    }
}

【讨论】:

  • 谢谢它正在工作,但我还必须为某种业务显示导航栏
猜你喜欢
  • 1970-01-01
  • 2013-08-05
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 2013-05-07
  • 2012-05-14
相关资源
最近更新 更多