概要
最近アプリを開発する時、StatusBarをコントロールする時がありました。このブログでリアクトネイティブ(React Native)のアプリでStatusBarをコントロールする方法をまとめます。
Splashスクリーン
私はリアクトネイティブ(React Native)でSplashスクリーンを使うためreact-native-splash-screen
を使ってます。react-native-splash-screen
について詳しく内容は下記のブログを参考してください。
何にも設定しないと、Splashスクリーンが表示される時、StatusBarが表示します。下記のように設定するとSplashスクリーンでStatusBarを非表示することができます。
iOS
SplashスクリーンでStatusBarを日表示するため、info.plist
を開いて下記のように修正します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
...
</dict>
</plist>
アンドロイド
アンドロイドでSplashスクリーンが表示される時、StatusBarを非表示するためは下記のようにMainActivity.java
を修正します。
...
public class MainActivity extends ReactActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
SplashScreen.show(this, true);
super.onCreate(savedInstanceState);
}
...
}
また、res/values/styles.xml
を下記のように修正します。
<resources>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
<item name="android:windowFullscreen">true</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
</resources>
アンドロイドで透明StatusBar
アンドロイドでStatusBarを透明にするためにはjs
レベルでソースコードを修正する必要があります。StatusBarを透明にしたいコンポーネント(Component)に下記のようにソースコードを修正します。
...
import {
...
StatusBar,
} from 'react-native';
...
export default class Story extends React.Component<Props, State> {
...
render() {
...
return (
<React.Fragment>
<StatusBar barStyle="dark-content" backgroundColor={'transparent'} translucent={true} />
...
</React.Fragment>
);
}
...
}
上のようにリアクトネイティブ(React Native)のStatusBarを使ってbackgroundColor={'transparent'}
とtranslucent={true}
を設定したら透明なStatusBarを使えることができます。
完了
今までリアクトネイティブ(React Native)を使って開発したアプリ内でStatusBarをコントロールする方法について説明します。上部で調べた内容以外にStatusBarをコントロールしたらこのブログに追加します。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。