2015-05-22 13 views
30

Ich habe Probleme beim Erstellen von CSS-Kreisen in reaktionsnativen. Das Folgende funktioniert in iPhone 6 Plus, aber in allen anderen iPhones werden sie zu Diamanten.Erstellen von CSS-Kreisen in reaktionsnativen

circle: { 
    height: 30, 
    width: 30, 
    borderRadius: 30, 
} 

Nun, wenn ich PixelRatio auf borderRadius verwenden funktioniert es in allen Dingen aber iPhone 6 Plus. iPhone 6 Plus macht es zu Boxen mit abgerundeten Ecken.

circle: { 
    height: 30, 
    width: 30, 
    borderRadius: 30/PixelRatio.get(), 
} 

Antwort

23

borderRadius sollte die Hälfte der Seite des Quadrats sein. Also 15 in deinem Fall - egal welches Pixelverhältnis das Gerät hat.

Es funktioniert mit 30/PixelRatio.get() nur für 2x Retina-Geräte, denn das Ergebnis ist 15. Dann für iPhone 6 Plus erhalten Sie tatsächlich eine runde Box, weil das Ergebnis 10 (Pixelverhältnis ist 3).

Ich bin überrascht zu sagen, es funktioniert auf dem iPhone 6 Plus mit 30 für ein 30x30 Quadrat.

+0

Vielen Dank für die Erklärung, warum 'PixelRatio.get' nicht funktioniert und dass wir nur 50% der quadratischen Seite verwenden sollten. – Noitidart

8

Ihr Randradius sollte eine halbe Breite und Ihre Höhe sein. wie unten:

circle: { 
    width: 44, 
    height: 44, 
    borderRadius: 44/2 
} 
+0

Was ist falsch bei der Verwendung von 'borderRadius: '50% ''? – Somename

+2

'borderRadius: '50% 'wirft einen Fehler in React16 und RN 0.49. Ich habe es gerade versucht, bevor ich google und diese Seite gefunden habe. – agm1984

+0

in android es sieht nicht wie kreis aus, es ist wie runde rect – khalifathul

Verwandte Themen