Skip to content

Rotate transform not working well on View with borderRadius #18266

Description

@brunolemos

When rotating a component, its children also rotate as expected, except for the Views with borderRadius > 0, which their rounded border does not rotate.

Environment

Environment:
OS: macOS High Sierra 10.13.3
Node: 8.9.0
Yarn: 1.5.1
npm: 5.7.1
Watchman: 4.9.0
Xcode: Xcode 9.2 Build version 9C40b
Android Studio: 3.0 AI-171.4443003

Packages: (wanted => installed)
react: ^16.3.0-alpha.1 => 16.3.0-alpha.1
react-native: ^0.54.0 => 0.54.0

Expected Behavior

Borders should rotate like everything else.

Actual Behavior

SCREENSHOTGIF

^ The one from the right has overflow: hidden on the main photo container, so things got worse. We actually can notice it's not just the border, but the actual view mask / clip bounds that's not rotating.

Steps to Reproduce

[ANDROID] https://snack.expo.io/@brunolemos/react-native---border-radius-rotate-bug

Full Code
importReact,{Component}from'react';import{Image,Text,View,StyleSheet}from'react-native';import{Constants}from'expo';exportdefaultclassAppextendsComponent{render(){return(<Viewstyle={styles.container}><Viewstyle={styles.block}><Viewstyle={styles.textContainer}><Text>SQUARE</Text><Imagesource={require('./assets/logo_facebook_square.png')}style={styles.image}/></View><Viewstyle={[styles.textContainer,{borderRadius: 10}]}><Text>ROUND</Text><Imagesource={require('./assets/logo_facebook_square.png')}style={[styles.image,{borderRadius: 10}]}/></View></View><Viewstyle={[styles.block,{transform: [{rotate: '-10deg'}]}]}><Viewstyle={styles.textContainer}><Text>SQUARE</Text><Imagesource={require('./assets/logo_facebook_square.png')}style={styles.image}/></View><Viewstyle={[styles.textContainer,{borderRadius: 10}]}><Text>ROUND</Text><Imagesource={require('./assets/logo_facebook_square.png')}style={[styles.image,{borderRadius: 10}]}/></View></View></View>);}}conststyles=StyleSheet.create({container: {flex: 1,alignItems: 'center',justifyContent: 'center',paddingTop: Constants.statusBarHeight,backgroundColor: '#ecf0f1',},block: {justifyContent: 'center',alignItems: 'center',marginBottom: 60,width: 200,height: 200,backgroundColor: 'white',},textContainer: {flexDirection: 'row',justifyContent: 'center',alignItems: 'center',margin: 10,padding: 10,borderWidth: 2,borderColor: 'red',},image: {width: 40,height: 40,borderWidth: 4,borderColor: 'green',},});

Investigating + Related

After more investigation this is what I found:

  • Everything works fine on react-native 0.49.5;
  • rotate + borderRadius > 0 + overflow:hidden bug introduced on 0.50.0; (30044fd?)
  • rotate + borderRadius > 0 + borderWidth > 0 bug introduced on 0.51.0; (4994d6a?)
  • Bug still present on 0.54.0.

Possibly related:

Metadata

Metadata

Assignees

No one assigned

    Labels

    Impact: RegressionDescribes a behavior that used to work on a prior release, but stopped working recently.Issue: Author Provided ReproThis issue can be reproduced in Snack or an attached project.Platform: AndroidAndroid applications.Ran CommandsOne of our bots successfully processed a command.Resolution: FixedA PR that fixes this issue has been merged.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions