코드를 이와 같이 작성하면 안드로이드에서 터치했을 때 물결 효과가 나타납니다. 그런데 지금과 같이 버튼이 사각형이 아닌 원형일 경우 터치했을 때 물결 효과가 원의 바깥까지 나타납니다.

    ▲ 그림 3-34 원 영역을 침범한 물결 효과

    이럴 때는 TouchableNativeFeedback 컴포넌트를 다음과 같이 View 컴포넌트로 감싸고, 해당 컴포넌트에 borderRadiusoverflow 스타일을 설정해주세요. overflow 값을 hidden으로 하면 지정한 영역 외 바깥 영역이 화면에 나타나지 않습니다.

    components/AddTodo.js

    import React, {useState} from 'react';
    import {
      View,
      StyleSheet,
      TextInput,
      Image,
      TouchableOpacity,
      Platform,
      TouchableNativeFeedback,
    } from 'react-native';
    
    function AddTodo() {
      const [text, setText] = useState('');
    
      return (
        <View style={styles.block}>
          <TextInput
            placeholder="할일을 입력하세요."
            style={styles.input}
            value={text}
            onChangeText={setText}
          />
          {Platform.OS === 'ios' ? (
            <TouchableOpacity activeOpacity={0.5}>
              <View style={styles.buttonStyle}>
                <Image
                  source={require('../assets/icons/add_white/add_white.png')}
                />
              </View>
            </TouchableOpacity>
          ) : (
            <View style={styles.circleWrapper}>
              <TouchableNativeFeedback>
                <View style={styles.buttonStyle}>
                  <Image
                    source={require('../assets/icons/add_white/add_white.png')}
                  />
                </View>
              </TouchableNativeFeedback>
            </View>
          )}
        </View>
      );
    }
    
    const styles = StyleSheet.create({
      (...)
      circleWrapper: {
        overflow: 'hidden',
        borderRadius: 24,
      },
    });
    
    export default AddTodo;
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.