使用 React Native 隐藏在 TabBarIOS 后面的内容
Content hidden behind TabBarIOS with React Native
我正在使用 React Native 构建一个 iOS 应用程序并正在实现一个 TabBarIOS
。选项卡上的内容似乎在后面流动并被栏遮挡。在 xcode 中,我会取消选中 "extend edges" 框,但我不确定如何使用 React Native 执行此操作。
这是我正在尝试做的事情的缩略版。 CreateUser
中的 <View>
在标签栏后面流动。有没有一种简单的方法可以确保内容不会被标签栏遮挡?
import React from 'react'
import {
StyleSheet,
Text,
TextInput,
View,
TouchableHighlight,
} from 'react-native'
export default class TabBar extends React.Component {
state = {
selectedTab: 'list'
}
render() {
return (
<TabBarIOS selectedTab={this.state.selectedTab}
unselectedTintColor="#ffffff"
tintColor="#ffe429"
barTintColor="#294163">
<TabBarIOS.Item
title="My List"
systemIcon="bookmarks"
selected={this.state.selectedTab==='list'}
onPress={() => {
this.setState({
selectedTab: 'list',
});
}}
>
<CreateUser />
</TabBarIOS.Item>
</TabBarIOS>
);
}
}
var styles = StyleSheet.create({
tabContent: {
flex: 1,
alignItems: 'center',
},
tabText: {
color: 'darkslategrey',
margin: 50,
},
});
export default class CreateUser extends React.Component{
render(){
return (
<View style={styles.container}>
<TouchableHighlight style={styles.button}>
<Text style={styles.buttonText}>LOG IN</Text>
</TouchableHighlight>
</View>
)
}
}
var styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: "column",
justifyContent: "flex-end",
alignItems: 'center',
},
button: {
backgroundColor: "#ffe429",
borderRadius: 3,
height: 60,
width: 200,
margin: 7,
//flex: 1,
alignItems: "center",
justifyContent: "center",
},
buttonText: {
color: "#294163",
}
})
当我使用 NavigatorIOS 组件然后呈现它的 initialRoute 组件时,这对我来说是一个问题,其中包含一个 TabBarIOS 组件。
如果您的情况属于这种情况,您可以使用 ScrollView 修复它:
将 flex 布局样式添加到您的 NavigatorIOS:
<NavigatorIOS
initialRoute={{
component: MyView,
title: 'My View',
}}
style={{flex: 1}}
/>
使用滚动视图:
<TabBarIOS>
<TabBarIOS.Item
systemIcon="history"
title="A Tab">
<ScrollView>
<Text>
Hello World
</Text>
</ScrollView>
</TabBarIOS.Item>
</TabBarIOS>
在我的例子中,我需要将 flex: 1
添加到屏幕顶层 View
的样式道具中。
//MyScreen.tsx
export default () => (
<View style={{ flex: 1 }}>
...
</View>
)
我正在使用 React Native 构建一个 iOS 应用程序并正在实现一个 TabBarIOS
。选项卡上的内容似乎在后面流动并被栏遮挡。在 xcode 中,我会取消选中 "extend edges" 框,但我不确定如何使用 React Native 执行此操作。
这是我正在尝试做的事情的缩略版。 CreateUser
中的 <View>
在标签栏后面流动。有没有一种简单的方法可以确保内容不会被标签栏遮挡?
import React from 'react'
import {
StyleSheet,
Text,
TextInput,
View,
TouchableHighlight,
} from 'react-native'
export default class TabBar extends React.Component {
state = {
selectedTab: 'list'
}
render() {
return (
<TabBarIOS selectedTab={this.state.selectedTab}
unselectedTintColor="#ffffff"
tintColor="#ffe429"
barTintColor="#294163">
<TabBarIOS.Item
title="My List"
systemIcon="bookmarks"
selected={this.state.selectedTab==='list'}
onPress={() => {
this.setState({
selectedTab: 'list',
});
}}
>
<CreateUser />
</TabBarIOS.Item>
</TabBarIOS>
);
}
}
var styles = StyleSheet.create({
tabContent: {
flex: 1,
alignItems: 'center',
},
tabText: {
color: 'darkslategrey',
margin: 50,
},
});
export default class CreateUser extends React.Component{
render(){
return (
<View style={styles.container}>
<TouchableHighlight style={styles.button}>
<Text style={styles.buttonText}>LOG IN</Text>
</TouchableHighlight>
</View>
)
}
}
var styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: "column",
justifyContent: "flex-end",
alignItems: 'center',
},
button: {
backgroundColor: "#ffe429",
borderRadius: 3,
height: 60,
width: 200,
margin: 7,
//flex: 1,
alignItems: "center",
justifyContent: "center",
},
buttonText: {
color: "#294163",
}
})
当我使用 NavigatorIOS 组件然后呈现它的 initialRoute 组件时,这对我来说是一个问题,其中包含一个 TabBarIOS 组件。
如果您的情况属于这种情况,您可以使用 ScrollView 修复它:
将 flex 布局样式添加到您的 NavigatorIOS:
<NavigatorIOS initialRoute={{ component: MyView, title: 'My View', }} style={{flex: 1}} />
使用滚动视图:
<TabBarIOS> <TabBarIOS.Item systemIcon="history" title="A Tab"> <ScrollView> <Text> Hello World </Text> </ScrollView> </TabBarIOS.Item> </TabBarIOS>
在我的例子中,我需要将 flex: 1
添加到屏幕顶层 View
的样式道具中。
//MyScreen.tsx
export default () => (
<View style={{ flex: 1 }}>
...
</View>
)