Saya ingin menampilkan navbar dalam mode potret dan bersembunyi dalam mode lansekap (untuk video layar penuh). Apakah ada cara untuk melakukan ini?
Anda dapat mengimplementasikan NavBar Anda sendiri dan meneruskannya ke Scene. Saya menggunakan sesuatu seperti itu
onLayout({nativeEvent}){
const isPortrait = nativeEvent.layout.width === WIDTH;
if (isPortrait){
if (this.state.height != NAVBAR_HEIGHT_PORTRAIT){
this.setState({height: NAVBAR_HEIGHT_PORTRAIT, delta:STATUS_BAR_HEIGHT});
}
} else {
if (this.state.height != NAVBAR_HEIGHT_LANDSCAPE){
this.setState({height: NAVBAR_HEIGHT_LANDSCAPE, delta:0});
}
}
}
render(){
return (
<View onLayout={this.onLayout.bind(this)} style={[styles.container, {height:this.state.height}, this.props.style]} >
{this.props.navBarHeader}
<View style={[styles.container, {height:this.state.height}, this.props.style]} >
<View style={{height:this.state.delta,flex:1}}></View>
<View style={{height:this.state.height-this.state.delta, flexDirection:'row'}}>
{this.props.navigationState.children.length > 1 ? this.renderBackButton(this.props) : this.renderLeftButton(this.props)}
<View style={{flex:1,justifyContent:'center',alignItems:'center'}}>
{this.renderTitle(this.props)}
</View>
{this.renderRightButton(this.props)}
</View>
{this.props.footer}
</View>
</View>
);
}
Mungkin kita bisa memasukkan logika seperti itu ke dalam komponen NavBar jika komunitas menginginkannya dan mengirimkan PR.
Ya saya menggunakan sesuatu yang serupa, meskipun lebih sederhana -
onLayout = event => {
const { width, height } = event.nativeEvent.layout;
var newStyle;
if (width > height) {
newStyle = update(this.state.style, {marginTop: {$set: 0}});
} else {
newStyle = update(this.state.style, {marginTop: {$set: 64}});
}
this.setState({style: newStyle});
// hide navbar in landscape mode
Actions.refresh({hideNavBar: (width > height)});
}
Hei @vinayr saya mencoba melakukan sesuatu yang serupa tetapi, di tempat saya, saya dapat
componentDidMount(){
Actions.refresh({hideNavBar:false});
}
componentWillUnmount(){
Actions.refresh({hideNavBar: true})
}
Jadi ketika saya meninggalkan adegan navbar, tetapi juga memuat ulang status atau sesuatu seperti itu, karena adegan sebelumnya memiliki validasi yang mendorong ke adegan saat ini, dan ketika saya kembali, itu dialihkan lagi ke adegan.
Komentar yang paling membantu
Anda dapat mengimplementasikan NavBar Anda sendiri dan meneruskannya ke Scene. Saya menggunakan sesuatu seperti itu
Mungkin kita bisa memasukkan logika seperti itu ke dalam komponen NavBar jika komunitas menginginkannya dan mengirimkan PR.