UIImagePickerController改变statusBar颜色的问题

使用UIImagePickerController获取图库照片后,发现statusBar的颜色改变了原有的颜色,需要重新设置,以便配合整体界面设计。尝试了一些网络上的解决方案,具体方式如下:

(方法4和5亲测有效,推荐使用)

方式1:

UIImagePickerController继承UINavigationController,在调用UIImagePickerController的地方,加上如下代码:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    // bug fixes: UIIMagePickerController使用中改变StatusBar颜色的问题
    if ([navigationController isKindOfClass:[UIImagePickerController class]] && ((UIImagePickerController *)navigationController).sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
        [[UIApplication sharedApplication] setStatusBarHidden:NO];
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];
    }
}

该方式亲测无效,根据苹果提供的API提示 [[UIApplication sharedApplication] setStatusBarStyle:(UIStatusBarStyleLightContent)];方法只支持iOS2 - 9

 设置状态栏

方式2:

需要在Info.plist配置文件中,增加一下两个键值对(注:这个我本人建议还是加在代码中比较好,如果代码中有相应的处理,相应的controller将不受影响)。

    <key>View controller-based status bar appearance</key>
    <true/>
    <key>Status bar is initially hidden</key>
    <false/>
    <key>Status bar style</key>
    <string>UIStatusBarStyleLightContent<string/>

该方式亲测有效,但是也会给别的界面带来问题,使用xujinshen。

方式3:

需要在Info.plist配置文件中,增加键:

    <key>View controller-based status bar appearance</key>
    <true/>
        <key>Status bar is initially hidden</key>
    <false/>

然后,在对应的UIViewController子类中实现以下方法:

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

该方式在对应的UIViewController子类是有效的,但是在UIImagePickerController类中没办法直接设置。

方式4:

声明一个类继承UIImagePickerController

#import <UIKit/UIKit.h>

@interface ImagePickerController : UIImagePickerController

@end

再其.m文件实现以下方法:

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

方式5:

实现UIImagePickerController的延展,并实现preferredStatusBarStyle方法


#import "UIImagePickerController+util.h"

@implementation UIImagePickerController (util)

// 状态栏设置
- (UIStatusBarStyle)preferredStatusBarStyle {

    return UIStatusBarStyleLightContent;
}

@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值