Как выполнить закругленный верхний фоновый компонент в React Native?

#react-native #user-interface #frontend

Вопрос:

В одном из моих побочных проектов, использующих React Native, я пытаюсь создать необычный пользовательский интерфейс для страницы профиля. Я хотел бы создать настраиваемый верхний фоновый компонент, подобный тому, который разработан Soft-UI от Creative Tim, но я не очень уверен, как лучше всего это сделать.

Вот снимок того, что я пытаюсь выполнить. Страница профиля программного интерфейса

Любая помощь будет с благодарностью принята.

Ответ №1:

Вот полный пример того, что я сделал из того, что вы хотите (https://snack.expo.dev/@heytony01/curious-apples ). Я объясняю, что я сделал ниже.

Ключ в том, чтобы понять flex box и абсолютную позицию.Хорошее место для изучения flex box — это (https://flexboxfroggy.com /) . Прочитайте документацию для position absolute (https://reactnative.dev/docs/layout-props )

Сначала используйте flex box, чтобы получить один вид, чтобы покрыть нижние 2/3 экрана, а верхний экран, чтобы покрыть верхнюю 1/3 экрана

 <View style={{flex:1}}>

         {/* Top  1/3*/}
        <View style={{flex:1,justifyContent:"center",alignItems:"center"}}>
        
        </View>

        {/* Bottom  2/3*/}
       <View style={{flex:2,justifyContent:"center",alignItems:"center"}}>

      </View>

</View>
 

Затем создайте верхний компонент профиля пользователя

 <View style={{flex:1}}>

         {/* Top  1/3*/}
        <View style={{flex:1,justifyContent:"center",alignItems:"center"}}>
           
          {/* Purple card*/}
           <View style={{
            width:"90%",
            height:"90%",
            backgroundColor:"purple",
            borderRadius:"5%",
            justifyContent:"center",
            alignItems:"center",
            fontSize:10
            }}>
              
            </View>
        
        </View>

        {/* Bottom  2/3*/}
        
       <View style={{flex:1,justifyContent:"center",alignItems:"center"}}>

      </View>
</View>
 

Затем сделайте положение панели последователей абсолютным, чтобы вы могли накладывать поверх другого представления

 <View style={{flex:1}}>

         {/* Top  1/3*/}
        <View style={{flex:1,justifyContent:"center",alignItems:"center"}}>
           
          {/* Purple card*/}
           <View style={{
            width:"90%",
            height:"90%",
            backgroundColor:"purple",
            borderRadius:"5%",
            justifyContent:"center",
            alignItems:"center",
            fontSize:10
            }}>
              
            </View>

           {/* Postion absloute bar*/}
           <View style={{
           zIndex:99, // Puts it above the other view
           position:"absolute",
           flexDirection:"row",
           bottom:-5,
        
           width:"70%",
           height:"20%",
           backgroundColor:"lightgray",
           borderRadius:10}}>
              
           </View>
        
        </View>

        {/* Bottom  2/3*/}
        
       <View style={{flex:1,justifyContent:"center",alignItems:"center"}}>
    
       </View>
      
</View>
 

Ответ №2:

UI Kitten — лучший способ добиться причудливых пользовательских интерфейсов в React Native: https://akveo.github.io/react-native-ui-kitten/docs/guides/getting-started#getting-started

Хотя этот пользовательский интерфейс наверху выглядит как простая закругленная карточка с линейным градиентом в качестве цвета фона