3

我正在使用 React Native 构建一个 iOS 应用程序,并且正在实现一个TabBarIOS. 选项卡上的内容似乎在后面流动并被栏遮挡。在 xcode 中,我将取消选中“扩展边缘”框,但不确定如何使用 React Native 执行此操作。

这是我正在尝试做的事情的缩写版本。<View>来自CreateUser标签栏后面的流动。有没有一种简单的方法可以确保内容不会被标签栏遮挡?

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",
    }

})
4

2 回答 2

1

这对我来说是一个问题,当使用 NavigatorIOS 组件然后呈现它的包含 TabBarIOS 组件的 initialRoute 组件时。

如果您的场景属于这种情况,您可以使用 ScrollView 来修复它:

  1. 将 flex 布局样式添加到您的 NavigatorIOS:

    <NavigatorIOS
    initialRoute={{
        component: MyView,
        title: 'My View',
    }}
    style={{flex: 1}}
    />
    
  2. 使用滚动视图:

    <TabBarIOS>
    <TabBarIOS.Item
      systemIcon="history"
      title="A Tab">
      <ScrollView>
        <Text>
          Hello World
        </Text>
      </ScrollView>
    </TabBarIOS.Item>
    </TabBarIOS>
    
于 2016-10-29T08:31:03.637 回答
0

就我而言,我需要为屏幕flex: 1顶层添加样式道具。View

RN 导航文档

//MyScreen.tsx

export default () => (
  <View style={{ flex: 1 }}>
  ...
  </View>
)

于 2021-07-04T19:55:50.293 回答