我在react-native中创建CSS圈子时遇到了一些问题。下面的工作在iPhone 6 Plus,但在所有其他iPhone,他们成为钻石。
circle: {
height: 30,
width: 30,
borderRadius: 30,
}
现在,如果我在borderRadius
上使用PixelRatio,它可以在除了iPhone 6 Plus之外的任何地方工作。iPhone 6 plus将其渲染为具有圆角的框。
circle: {
height: 30,
width: 30,
borderRadius: 30 / PixelRatio.get(),
}
9条答案
按热度按时间xt0899hw1#
你的边界半径应该是宽度和高度的一半。如下所示:
fxnxkyjh2#
这些都不符合我的需求,如果你需要一个响应的圈子,你可以尝试使用我的解决方案:
第一步:从react native导入Dimensions*(和其他使用的元素)*(或添加到现有的导入列表中)
第二步:添加可触摸元素 (可计算设备宽度或高度)
**步骤3:**享受你的响应式圆圈元素
z3yyvxxp3#
borderRadius应该是正方形边长的一半。所以15在您的情况下-无论什么像素比例的设备。
30 / PixelRatio.get()
只适用于2x视网膜设备,因为结果是15。然后对于iPhone 6 Plus,您确实会得到一个圆形框,因为结果是10(像素比为3)。我很惊讶你说它在iPhone 6 Plus上工作,30个30 x30平方。
isr3a4wc4#
如果你想做一个在任何设备上都能工作的圆,你唯一应该做的就是给予相同的
height
和width
相同的值,然后给borderRadius
一个非常高的值,我个人给它1000,这样它就足够大了,在大多数情况下liwlm1x95#
由于borderRadius样式需要数字作为值,因此您不能使用borderRadius:50%。要画圆,你所要做的就是使用你的图像的宽度/高度,并将其除以2。阅读更多内容:https://github.com/refinery29/react-native-cheat-sheet
f2uvfpb96#
基本上只需要应用相同的
height, width
,在borderRadius
中必须除以2例如
height : 50, width :50 borderRadius : 50/2
只是圈
带设备高度的响应圆
带设备宽度的响应圆
示例代码
yvgpqqbh7#
我一直在使用
styled-components
包来样式化我的React Native组件,我发现最简单的解决方案是将border radius
的px大小设置为大于圆形宽度的一半。然后,对于任何小于该值的尺寸,它将默认为相当于50%的边框半径。sgtfey8w8#
onLayout
为我工作。计算宽度和高度以保持1:1的宽高比,然后将borderRadius设置为width/2
然后像这样将其应用于视图:
顺便说一句,有人能解释为什么
borderRadius:1000
是坏的吗?quhf5bfb9#
我知道这是一个老问题,但我想用最简单的方法回答。只要将borderRadius属性设置为高值,它就会自动画一个圆。使用此解决方案,您不需要指定宽度或高度。(我会的,因为我只有一个没有内容的视图)