Need to make Image Bottom to corner: React Native

前端 未结 3 875
温柔的废话
温柔的废话 2021-01-27 04:29

I want to make image rounded from bottom of it. Here is what I wanted to make:

I have tried to set borderRadius, but it will apply for the whole image

相关标签:
3条回答
  • 2021-01-27 04:31

    you can add a png frame transparent with this shape on it

    also you can check this it may help the-shapes-of-react-native


    Update

    here is how I managed do this by code

    first you create this structure

    render() {
      return(
        <View style={styles.container} >
          <View style={styles.background} >
            <Image style={styles.image} source={require('./image.jpeg')} />
          </View>
        </View>
      );
    }
    

    and then apply this style

    const styles = {
      container: {
        alignSelf: 'center',
        marginTop: 100,
        width: 200,
        overflow: 'hidden', // for hide the not important parts from circle
        margin: 10,
        height: 100,
      },
      background: { // this shape is a circle 
        borderRadius: 400, // border borderRadius same as width and height
        width: 400,
        height: 400,
        marginLeft: -100, // reposition the circle inside parent view
        position: 'absolute',
        bottom: 0, // show the bottom part of circle
        overflow: 'hidden', // hide not important part of image
      },
      image: {
        height: 100, // same width and height for the container
        width: 200,
        position: 'absolute', // position it in circle
        bottom: 0, // position it in circle
        marginLeft: 100, // center it in main view same value as marginLeft for circle but positive
      }
    }
    

    and here is the results

    0 讨论(0)
  • 2021-01-27 04:32

    You can check my repository, if it helps you

    https://github.com/paraswatts/React_Native_Custom_shape_image_view/tree/master

    There is a catch I have squeezed the width of image and then scaled it on X-axis

    0 讨论(0)
  • 2021-01-27 04:34

    Using the approach mentioned by @Mohamed Khalil,

    const styles = StyleSheet.create({
    containerStyle: {
        alignSelf: 'center',
        width: window.width,
        overflow: 'hidden',
        height: window.width / 1.7
    },
    sliderContainerStyle: {
        borderRadius: window.width,
        width: window.width * 2,
        height: window.width * 2,
        marginLeft: -(window.width / 2),
        position: 'absolute',
        bottom: 0,
        overflow: 'hidden'
    },
    slider: {
        height: window.width / 1.7,
        width: window.width,
        position: 'absolute',
        bottom: 0,
        marginLeft: window.width / 2,
        backgroundColor: '#9DD6EB'
    }});
    

    Here is the result. I used Dimensions (const window = Dimensions.get('window');) here to make it more dynamic to different screen sizes.

    0 讨论(0)
提交回复
热议问题