iOS更改状态栏字体颜色

状态栏的字体为黑色:UIStatusBarStyleDefault

状态栏的字体为白色:UIStatusBarStyleLightContent

一、在info.plist中,将View controller-based status bar appearance设为NO

状态栏字体的颜色只由下面的属性设定,默认为白色:

// default is UIStatusBarStyleDefault

[UIApplication sharedApplication].statusBarStyle

解决个别vc中状态栏字体颜色不同的办法

1、在info.plist中,将View controller-based status bar appearance设为NO.

2、在app delegate中:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

3、在个别状态栏字体颜色不一样的vc中

-(void)viewWillAppear:(BOOL)animated{

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;

}

-(void)viewWillDisappear:(BOOL)animated

{

[super viewWillDisappear:animated];

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

}

二、在info.plist中,将View controller-based status bar appearance设为YES,或者没有设置。

View controller-based status bar appearance的默认值就是YES。

如果View controller-based status bar appearance为YES。

则[UIApplication sharedApplication].statusBarStyle 无效。

用下面的方法:

1、在vc中重写vc的preferredStatusBarStyle方法。

-(UIStatusBarStyle)preferredStatusBarStyle

{

return UIStatusBarStyleDefault;

}

2、在viewDidload中调用:[self setNeedsStatusBarAppearanceUpdate];

但是,当vc在nav中时,上面方法没用,vc中的preferredStatusBarStyle方法根本不用被调用。

原因是,[self setNeedsStatusBarAppearanceUpdate]发出后,

只会调用navigation controller中的preferredStatusBarStyle方法,

vc中的preferredStatusBarStyley方法跟本不会被调用。

解决办法有两个:

方法一:

设置navbar的barStyle 属性会影响status bar 的字体和背景色。如下。

//status bar的字体为白色

//导航栏的背景色是黑色。

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

//status bar的字体为黑色

//导航栏的背景色是白色,状态栏的背景色也是白色。

//self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

方法二:

自定义一个nav bar的子类,在这个子类中重写preferredStatusBarStyle方法:

MyNav* nav = [[MyNav alloc] initWithRootViewController:vc];

self.window.rootViewController = nav;

@implementation MyNav

- (UIStatusBarStyle)preferredStatusBarStyle

{

UIViewController* topVC = self.topViewController;

return [topVC preferredStatusBarStyle];

}

iOS9更改状态栏字体颜色

- (UIStatusBarStyle)preferredStatusBarStyle{
    
    return UIStatusBarStyleLightContent;
    
}
在 UniApp 中,**修改状态栏字体颜色(即亮色或暗色)** 只能在 **Android 和 5+ App** 上实现,**iOS 平台不支持动态修改**,只能通过原生配置设置默认样式。 --- ## ✅ 支持平台说明 | 平台 | 是否支持修改状态栏字体颜色 | 说明 | |------------|-----------------------------|------| | **Android** | ✅ | 支持动态设置亮色/暗色 | | **iOS** | ❌ | 仅支持通过原生配置设置,不能动态修改 | | **H5** | ❌ | 浏览器不提供该能力 | | **小程序** | ❌ | 不支持修改原生状态栏字体颜色 | --- ## ✅ Android 上修改状态栏字体颜色的方法 在 UniApp 中,可以使用 `uni API` 来设置状态栏字体颜色: ### ✅ 使用 `uni API`:`uni.setSystemBarSetting` ```javascript uni.setSystemBarSetting({ style: 'light', // 可选值:'light'(亮色字体)、'dark'(暗色字体) animation: true, // 是否使用动画过渡 success: () => { console.log('状态栏字体颜色设置成功'); }, fail: (err) => { console.error('设置失败', err); } }); ``` --- ## ✅ 示例:页面加载时设置状态栏字体颜色 ```vue <template> <view class="container"> <text>这是一个页面,加载时将修改状态栏字体颜色</text> </view> </template> <script> export default { onLoad() { // 页面加载时修改状态栏字体颜色 uni.setSystemBarSetting({ style: 'light', // 设置为亮色字体(白色) animation: true, success: () => { console.log('状态栏字体颜色已设置为亮色'); }, fail: (err) => { console.error('设置状态栏字体颜色失败', err); } }); } }; </script> <style> .container { background-color: #000; /* 暗色背景,配合亮色字体 */ padding-top: 20px; color: #fff; } </style> ``` --- ## ✅ iOS 上的替代方案 iOS 不支持动态修改状态栏字体颜色,但你可以在原生配置中设置默认样式: ### 修改 iOS 原生配置(仅限 5+ App) 在 `manifest.json` 的源码视图中,找到 `plus` -> `distribute` -> `ios` -> `Info.plist`,添加以下内容: ```xml <key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/> ``` - `UIStatusBarStyleLightContent`:亮色字体(白色) - `UIStatusBarStyleDefault`:默认暗色字体(黑色) --- ## ✅ 判断平台并做兼容处理 ```javascript onLoad() { const systemInfo = uni.getSystemInfoSync(); const platform = systemInfo.platform.toLowerCase(); if (platform === 'android') { uni.setSystemBarSetting({ style: 'light', success: () => { console.log('Android 状态栏字体已设为亮色'); } }); } else if (platform === 'ios') { console.log('iOS 不支持动态修改状态栏字体颜色'); } else { console.log('当前平台不支持此功能'); } } ``` --- ## ✅ 总结 | 功能 | 支持方式 | |------|----------| | Android 修改状态栏字体颜色 | ✅ 使用 `uni.setSystemBarSetting({ style: 'light'/'dark' })` | | iOS 修改状态栏字体颜色 | ❌,只能在原生配置中设置 | | 小程序 | ❌ | | H5 | ❌ | --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值