반응형
✔️ 필요성
React Native에서 컴포넌트 위에서 도형을 그리고 싶을 때가 있다. 나는 카드 컴포넌트를 사선으로 나누는 대각선(Diagonal Line)을 그리고 싶었다!
✔️ 해결
React Native에서 도형을 그릴 때는 react-native-svg 라이브러리를 이용하면 쉽게 그릴 수 있다. <Line/> 태그를 활용해서 양쪽 대각선의 위치를 잡아주면 된다.
px 단위로 위치를 잡을 수도 있는데 난 %를 활용해서 오른쪽 1/3 지점에서 왼쪽 1/3 지점으로 이어지는 대각선을 그렸다
npm install react-native-svg
import React from 'react';
import styled from 'styled-components/native';
import Svg, {Line} from 'react-native-svg';
import Card from '~/components/Card';
const StyledCard = styled(Card)`
padding-top: 0;
padding-bottom: 0;
`;
const CardWithDiagonalLine = () => {
return (
<StyledCard onPress={onPress}>
<Svg height="100%" width="100%">
<Line
x1="66%"
y1="0"
x2="33%"
y2="100%"
stroke="rgba(0, 0, 0, 0.2)"
strokeWidth="1"></Line>
</Svg>
</StyledCard>
);
};
✔️ 추가
위에서 Card 컴포넌트를 그릴 때 사용했던 코드도 함께 첨부
import React from 'react';
import Styled from 'styled-components/native';
import {Pressable} from 'react-native';
import {Dimensions} from 'react-native';
const Container = Styled.View<{pressed: boolean; style: React.ReactNode}>`
width: ${Dimensions.get('window').width * 0.8}px;
height: 180px;
margin-top: 20px;
margin-bottom: 8px;
padding: 10px;
border-radius: ${Dimensions.get('window').width * 0.05}px;
background-color: rgba(255, 255, 255, 1);
border: 0.5px solid rgba(0, 0, 0, 0.2);
backdrop-filter: blur(5px) saturate(100%) contrast(45%) brightness(130%);
align-items: center;
justify-content: center;
opacity: ${({pressed}) => (pressed ? 0.75 : 1)};
box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.2);
`;
interface Props {
children?: React.ReactNode;
onPress(): void;
style?: React.ReactNode;
}
const Card = ({children, onPress, style}: Props) => {
return (
<Pressable onPress={onPress}>
{({pressed}) => (
<Container pressed={pressed} style={style}>
{children}
</Container>
)}
</Pressable>
);
};
export default Card;
반응형
'프론트엔드 앱 > React-native' 카테고리의 다른 글
[자동완성검색] UI Kitten Autocomplete 사용하기 / 기본편 (0) | 2021.12.15 |
---|---|
[자동완성검색] react-native-autocomplete-dropdown 사용하기 (0) | 2021.12.15 |
[에러] React Native version mismatch 해결 (0) | 2021.12.10 |
styled-components 에러해결 : ViewProps & RefAttributes<View> & ThemeProps<DefaultTheme> 형식에 속성이 없습니다 (0) | 2021.12.07 |
styled-components 에러해결 : DefaultTheme 형식에 속성이 없습니다 (0) | 2021.12.07 |