Android 如何在React Native中创建对角线边框?
我正在根据设计师的设计开发React原生应用程序。设计中有几个地方有一条对角线的按钮或形状(请参见下面的示例)。我尝试过使用SkewX,但这似乎只是旋转了整个形状(而且在Android上似乎不起作用)。如何绘制一侧有对角线边框的矩形/按钮Android 如何在React Native中创建对角线边框?,android,ios,reactjs,react-native,expo,Android,Ios,Reactjs,React Native,Expo,我正在根据设计师的设计开发React原生应用程序。设计中有几个地方有一条对角线的按钮或形状(请参见下面的示例)。我尝试过使用SkewX,但这似乎只是旋转了整个形状(而且在Android上似乎不起作用)。如何绘制一侧有对角线边框的矩形/按钮 您可以将css应用于视图类并创建所需的输出, 这里有一个小的演示代码编辑版本 import React, { Component } from 'react'; import { View, StyleSheet } from 'react-native';
您可以将css应用于
视图
类并创建所需的输出,
这里有一个小的演示代码编辑版本
import React, { Component } from 'react';
import { View, StyleSheet } from 'react-native';
import { Constants } from 'expo';
export default class App extends Component {
render() {
return (
<View style={styles.container}>
<View style={styles.triangleCorner}></View>
<View style={styles.triangleCornerLayer}></View>
<View style={styles.triangleCorner1}></View>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
paddingTop: Constants.statusBarHeight,
backgroundColor: '#ecf0f1',
},triangleCorner: {
position: 'absolute',
top:105,
left:0,
width: 300,
height: 100,
backgroundColor: 'transparent',
borderStyle: 'solid',
borderRightWidth: 50,
borderTopWidth: 80,
borderRightColor: 'transparent',
borderTopColor: 'gray'
},triangleCorner1: {
position: 'absolute',
top:100,
left:0,
width: 130,
backgroundColor: 'transparent',
borderStyle: 'solid',
borderRightWidth: 50,
borderTopWidth: 90,
borderRightColor: 'transparent',
borderTopColor: 'green'
},triangleCornerLayer: {
position: 'absolute',
top:107,
left:0,
width:297,
height: 100,
backgroundColor: 'transparent',
borderStyle: 'solid',
borderRightWidth: 47,
borderTopWidth: 75,
borderRightColor: 'transparent',
borderTopColor: 'white'
}
});
import React,{Component}来自'React';
从“react native”导入{View,StyleSheet};
从“expo”导入{Constants};
导出默认类应用程序扩展组件{
render(){
返回(
);
}
}
const styles=StyleSheet.create({
容器:{
弹性:1,
对齐项目:“居中”,
为内容辩护:“中心”,
paddingTop:Constants.statusBarHeight,
背景颜色:“#ecf0f1”,
},三角角:{
位置:'绝对',
排名:105,
左:0,,
宽度:300,
身高:100,
背景色:“透明”,
边框样式:“实心”,
边线宽度:50,
边框宽度:80,
borderRightColor:“透明”,
borderTopColor:“灰色”
},三角形角1:{
位置:'绝对',
前100名,
左:0,,
宽度:130,
背景色:“透明”,
边框样式:“实心”,
边线宽度:50,
边框宽度:90,
borderRightColor:“透明”,
borderTopColor:“绿色”
},三角形角图层:{
位置:'绝对',
排名:107,
左:0,,
宽度:297,
身高:100,
背景色:“透明”,
边框样式:“实心”,
边线宽度:47,
边框宽度:75,
borderRightColor:“透明”,
borderTopColor:“白色”
}
});
结果:
使用
CALayer
制作这种形状
代码如下:
let layer = CAShapeLayer()
let path = UIBezierPath()
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: 150, y: 0))
path.addLine(to: CGPoint(x: 100, y: 50))
path.addLine(to: CGPoint(x: 0, y: 50))
path.close()
layer.path = path.cgPath
layer.fillColor = UIColor.green.cgColor
layer.strokeColor = UIColor.clear.cgColor
view.layer.addSublayer(layer)
let layer1 = CAShapeLayer()
path.move(to: CGPoint(x: 100, y: 45))
path.addLine(to: CGPoint(x: 300, y: 45))
path.addLine(to: CGPoint(x: 350, y: 5))
path.addLine(to: CGPoint(x: 150, y: 5))
path.close()
layer1.path = path.cgPath
layer1.fillColor = UIColor.clear.cgColor
layer1.strokeColor = UIColor.black.cgColor
view.layer.addSublayer(layer1)
向下滚动到平行四边形。谢谢!这真的很有趣。在我原来帖子中的设计中,按钮的第二部分(你的灰色部分)实际上是带有灰色边框的白色。由于此方法需要使用边界来实际创建对角边,因此如何实现边界?我是否必须创建一个相同的
三角形Corner1
,除了2点不高,1点不宽的白色背景,并将其覆盖在灰色背景之上?看起来真的很乏味!>_我知道这有点乏味,但覆盖是唯一的选择,我知道这个问题是关于反应本机。这个代码看起来很快。