2015-11-12 17 views
6

タイトルには、RNで使用されているレイアウトサイズの単位が混乱しています。 documentationには、ピクセルの代わりにdpをサイズ単位として使用することを示すコードがあります。ここで、getPixelSizeForLayoutSize()関数は、dp値をピクセル値に変換しようとします。しかし、実際のアプリケーションでは、PixelRatio.get()を使用してサイズ値(高さ/幅など)を分割しないと、コンポーネントが画面外に出てしまいます。本当にあなたの明確化に感謝します!フレックスボックスはネイティブで反応しますか?

var image = getImage({ 
    width: PixelRatio.getPixelSizeForLayoutSize(200), 
    height: PixelRatio.getPixelSizeForLayoutSize(100), 
}); 
<Image source={image} style={{width: 200, height: 100}} /> 

答えて

6

ネイティブのJavaScriptレベルで、デバイスの画素とは対照的に、論理画素は、(また、iOSの「点」としても知られる)を使用して反応します。ネイティブレベルで作業する場合、論理ピクセルに画面のスケール(たとえば、2倍、3倍)を掛けてデバイスピクセルで作業する必要が生じることがあります。

イメージを使用して作業している場合は、そのサイズを論理ピクセルで指定する必要があります。また、React Nativeは分数ピクセルをサポートします。デバイスピクセルの粒度で正確なレイアウトを指定する必要がある場合は、1/PixelRatio.get()を使用します。

+1

ありがとうございます。すべてのデザインは現在dp(Android版のiOS「ポイント」または論理ピクセル)になっています。 dpをiOSポイントに変換する方法はありますか?私はいくつかの検索をしたが、多くの有用な情報を見つけることができなかった。 – ZJL

+2

私もそれを理解しました。 Androidの言葉では、FlexboxはJavascriptレベルでdpをユニットとして使用していると思います。 – ZJL

+0

@ZJLので、私の質問に答えてください、私はどこでも解決策を見つけることができません..! http://stackoverflow.com/questions/38325043/react-native-how-to-scale-font-size-to-support-many-different-resolutions-and-s – SudoPlz

関連する問題