RN flexbox - 2

저번편에 이어서 flexbox에 대해 공부를 해보자.

이걸 만들어 보자.

일단 최대한 답을 보지 말고 생각을 해보도록하자.

위의 navBar부분과 아까 했던 부분이 위 아래로 나뉘어져 있다. 위의 부분은 Text가 들어가 있고, 아래부분은 아까했던 부분이 들어가 있다.

class gitbookTest extends Component {
  render() {
    return (
      <View style={styles.container}>
        <View style={styles.navBar}>
          <Text>
            NavBar
          </Text>
        </View>
        <View style={styles.body}>
          <View style={styles.left}>
          </View>
          <View style={styles.right}>
            <View style={styles.rightTop}>
            </View>
            <View style={styles.rightBottom}>
            </View>
          </View>
        </View>
      </View>
    );
  }
}


const styles = StyleSheet.create({
  container: {
    flex: 1,
    flexDirection: 'column',
  },
  navBar: {
    height: 60,
    backgroundColor: '#B0B0B0',
  },
  body: {
    flex: 1,
    flexDirection: 'row',
  },
  left: {
    flex: 1,
    backgroundColor: 'red'
  },
  right: {
    flex: 2,
    flexDirection: 'column',
  },
  rightTop: {
    flex: 1,
    backgroundColor: 'blue'
  },
  rightBottom: {
    flex: 2,
    backgroundColor: 'yellow'
  }

});

이걸 실행 해보도록 하자. 그러면 되긴 되는데 Text가 가운데가 아니라 왼쪽위에 있다. 이걸 가운데 정렬을 해야한다. 그 전편에 있던 글 중에서 영어로 된 css-trick을 다시한번 읽어 보자. 무엇을 쓰는지 알았다면 RN flexbox docs 전편에 있던 document을 읽어서 사용하려고 한 속성이 있는지 확인. 그 속성을 사용하자.

힌트: justifyContent 와 alignItems을 사용한다. 이 속성을 잘 모르면 꼭 전편의 링크들을 읽어보길 바란다.

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View
} from 'react-native';

class gitbookTest extends Component {
  render() {
    return (
      <View style={styles.container}>
        <View style={styles.navBar}>
          <Text>
            NavBar
          </Text>
        </View>
        <View style={styles.body}>
          <View style={styles.left}>
          </View>
          <View style={styles.right}>
            <View style={styles.rightTop}>
            </View>
            <View style={styles.rightBottom}>
            </View>
          </View>
        </View>
      </View>
    );
  }
}


const styles = StyleSheet.create({
  container: {
    flex: 1,
    flexDirection: 'column',
  },
  navBar: {
    height: 60,
    backgroundColor: '#B0B0B0',
    justifyContent: 'center',
    alignItems: 'center',
  },
  body: {
    flex: 1,
    flexDirection: 'row',
  },
  left: {
    flex: 1,
    backgroundColor: 'red'
  },
  right: {
    flex: 2,
    flexDirection: 'column',
  },
  rightTop: {
    flex: 1,
    backgroundColor: 'blue'
  },
  rightBottom: {
    flex: 2,
    backgroundColor: 'yellow'
  }

});

AppRegistry.registerComponent('gitbookTest', () => gitbookTest);

이걸 실행하면 우리가 원한 레이아웃이 그려진다.

나는 여기서 navBar에 height값을 주었다. 이 경우 화면의 크기가 변해도 navBar의 높이는 항상 고정이고, body 부분의 크기만 변하게 된다. flexbox는 고정크기와 상대크기 를 모두 사용할 수 있고, 상대 크기는 고정크기를 전부 사용하고 남은 부분들로 사용하게 된다. 전편의 첫번째 링크를 읽으면 알수 잇을 것이다.

다음편 에서는 이제 flexbox와 컴포넌트를 사용하는 연습을 좀 더 해보도록 하자.

results matching ""

    No results matching ""