关于将系统自带的UIImagePickerController 作为uitabbarcontroller时 present时出现问题的解决

本文介绍了一个在使用UIImagePickerController时遇到的页面突闪问题,并提供了详细的解决方案。通过在代码中添加特定的视图操作和状态栏隐藏动画,成功解决了在iOS设备上展示图片选择器时的界面异常。同时,还讨论了在保存图片到相册后,如何避免“取消”键重新出现的方法,涉及到通知机制和视图的动态管理。
摘要由CSDN通过智能技术生成

把我的代码先放上来吧: 

#pragma mark --

#pragma mark Methods

- (void)initImagePickerControllerInterface

{

    if (!_imagePickerController) {

        _imagePickerController = [[UIImagePickerControlleralloc]init];

    }

    

    [_imagePickerControllersetSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

    [_imagePickerControllersetDelegate:self];

    [_imagePickerControllersetAllowsEditing:NO];

    [selfaddChildViewController:_imagePickerController];    //只需要加上这句话即可解决present时页面突闪的问题

    [self.viewaddSubview:_imagePickerController.view];

    

    [[UIApplicationsharedApplication]setStatusBarStyle:UIStatusBarStyleBlackTranslucent];

}



//注意:控制器还需要继承

UINavigationControllerDelegate

//下面这个用来解决都留有 20 个像素空隙的问题: (在当前类的viewwillappear和viewdidappear里不再需要设置statusbar)这样上边的状态栏会闪现一下,但没有更好的办法了

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

{

    

    [UIViewanimateWithDuration:0.4animations:^{   //这个地方设成0.3貌似就不行

        

        [[UIApplicationsharedApplication]setStatusBarHidden:YES];

        

    } completion:^(BOOL finished) {

        [[UIApplicationsharedApplication]setStatusBarHidden:NO];

    }];

    

    UIView *custom = [[UIViewalloc]initWithFrame:CGRectMake(0,0,0,0)];

    UIBarButtonItem *btn = [[UIBarButtonItemalloc]initWithCustomView:custom];

    [viewController.navigationItem setRightBarButtonItem:btn animated:NO];

    viewController.title = @" ";

    

    if ([GNDeviceversionPermit:7second:0]) { //下面这段话如果在IOS5上运行的话会显示有点问题,所以这个地方注释

        NSDictionary *attributes=[NSDictionarydictionaryWithObjectsAndKeys:[UIColorblackColor],UITextAttributeTextColor,[UIFontboldSystemFontOfSize:20],UITextAttributeFont,nil];

        [viewController.navigationController.navigationBarsetTitleTextAttributes:attributes];

    }

    

    [btn release];

    [custom release];

}



PS:1216日,后来又出现个问题,就是在其它页面把扫描到的内容保存到相册后,历史图片页面的右上角的“取消”键就又出现了,现在能想到的办法就是当保存到相册时去发个通知,当"历史图片"页面收到通知后,把UIImagePickerController的view移除掉,然后再添加

#pragma mark --

#pragma mark GNNotification

- (void)handleSaveImageTOCustomAlbum:(NSNotification*)notification

{

    if (_imagePickerController) {

        [_imagePickerController.view removeFromSuperview];

        [_imagePickerController removeFromParentViewController];

        [_imagePickerController release];

        _imagePickerController = nil;

        

//        [self initImagePickerControllerInterface];

        [self performSelector:@selector(initImagePickerControllerInterface) withObject:nil afterDelay:1];    //不知道为什么这个地方需要延时下在IOS6上才会有效果,不然还是会有"取消"键

     }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值