2021. 7. 3. 12:19ㆍcoding
overlap, overlay, images, stack ... 등 여러 키워드로 오랜 시간 구글링하다가 포기하길 반복하다가
드디어 해결했다~~~
overlap images로 검색하면 다 1-2개 이미지만 겹치는 방법이 나와 있어서 적용하기 어려웠다
나는 user input에 따라 길이가 달라지는 이미지들의 리스트를 보여주는데, 이 이미지들을 조금씩 겹치게 하는 것이 목적이었다
나는 아래서부터 위로 하나씩 component를 쌓는 코드를 짜서 reversed_index라는 새로운 변수를 만들어 줘야 했다.
위부터 0, 1, 2 index를 갖는데 이를 아래부터 0, 1, 2 로 바꿔준 index를 reversed_index라는 변수에 저장하고
이 reversed_index가 0이면 (=맨 아래 component면) 아무 style을 적용하지 않는다. 얘는 겹칠 게 없으니까
그 외의 경우엔 position: 'relative'으로 설정하고 겹치고 싶은 모양에 따라 top, bottom, left, right 등을 조정하고 zIndex까지 설정해준다.
zIndex가 무엇인지 드디어 이해했는데, 말 그대로 z축이라고 생각하면 되는 듯
여러 component가 겹쳐있을 때 뭐를 맨 위에 둘지 결정하는 옵션이다. zIndex가 클수록 위에, 작을수록 아래로 간다.
난 가장 최근에 추가된, 위에 있는 component일수록 z축에서도 위에 올리고 싶기 때문에 reversed_index를 그대로 zIndex로 설정해주었다.
...
render() {
const {...} = this.state;
var reversed_index;
return (
...
{
imageList.map((item, index) => {
// 아래부터 0, 1, 2, ... 로 index 바꿔주기
reversed_index = imageList.length - 1 - index;
return (
// reversed_index가 0인 경우 (맨 아래 component), style 적용하지 않음
// 그 외의 경우, 다음과 같이 style 적용함
// bottom을 조정해서 아래 component와 약간 겹치도록 함
// zIndex를 설정해 위에 오는 component가 더 z축에서 더 위로 오게 설정함
<View style={ (reversed_index==0) ? {} : {position: 'relative', bottom: reversed_index*15*(-1), zIndex: reversed_index}} key={index}>
<TouchableOpacity key={index}>
<MyComponenet key={index} {...item}/>
</TouchableOpacity>
</View>
)
})
}
...
)
...
}
'coding' 카테고리의 다른 글
React Native 어플 출시했다다다 (0) | 2021.07.25 |
---|---|
React Native 시간에 따라 배경화면(테마) 바꾸기 (0) | 2021.07.04 |
React Native Modal 바깥 부분 터치해서 닫기 (0) | 2021.07.03 |
React Native 화면 크기별로 폰트 사이즈 변경하기 (0) | 2021.06.25 |
React Native 어플 안에서 소리 재생하기 (0) | 2021.06.25 |