2015-05-22 12 views
30

Mam problemy z tworzeniem kręgów Css w trybie reagowania natywnego. Poniższe działa na iPhone 6 Plus, ale we wszystkich innych iPhone'ach stają się diamentami.Tworzenie kręgów programu css w trybie reakcji natywnej

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

Teraz, jeśli mogę użyć PixelRatio na borderRadius działa we wszystkim, ale iPhone 6 Plus. iPhone 6 plus renderuje go jako pudełka z zaokrąglonymi narożnikami.

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

Odpowiedz

23

borderRadius powinien być o połowę mniejszy od kwadratu. A więc 15 w twoim przypadku - bez względu na stosunek pikseli urządzenia.

Działa z 30/PixelRatio.get() tylko dla 2x urządzeń siatkówki, powodując wynik 15. Następnie dla iPhone 6 Plus, rzeczywiście dostajesz zaokrąglone pudełko, ponieważ wynik wynosi 10 (stosunek pikseli wynosi 3).

Jestem zaskoczony, mówiąc, że działa na iPhone 6 Plus z 30 na 30x30 kwadratowych.

+0

Dzięki za wyjaśnienie, dlaczego 'PixelRatio.get' nie działa i wzmacnianie, że powinniśmy po prostu użyć 50% kwadratowej strony. – Noitidart

8

promień twojej obramowania powinien być równy połowie szerokości i wysokości. jak poniżej:

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

Co jest złego w użyciu 'borderRadius: '50% ''? – Somename

+2

'borderRadius: '50% '' zgłasza błąd w React16 i RN 0.49. Właśnie wypróbowałem to przed Googlingiem i znajdowaniem tej strony. – agm1984

+0

w Androidzie nie wygląda jak koło, to jest jak round rect – khalifathul