短い答えははいです。すべてのフォントの応答性を考慮する必要があります。私が使った方法はいくつかあります。
前述のとおり、getPixelSizeForLayoutSize
を使用できます。
static getPixelSizeForLayoutSize(layoutSize: number): number {
return Math.round(layoutSize * PixelRatio.get());
}
ことに問題がPixelRatio.getは、次の値を返すということです:
* PixelRatio.get() === 1
* - mdpi Android devices (160 dpi)
* - PixelRatio.get() === 1.5
* - hdpi Android devices (240 dpi)
* - PixelRatio.get() === 2
* - iPhone 4, 4S
* - iPhone 5, 5c, 5s
* - iPhone 6
* - xhdpi Android devices (320 dpi)
* - PixelRatio.get() === 3
* - iPhone 6 plus
* - xxhdpi Android devices (480 dpi)
* - PixelRatio.get() === 3.5
* - Nexus 6
基本的には数に渡さ返すことを意味します* getPixelSizeForLayoutSize
は、基本的には、ボンネットの下に次のようになりますiPhone6の場合は2、iPhone6 Plusの場合は* 3です。通常、iPhone6Plusのフォントサイズが大きすぎるため正しく調整されません。 iPhone6とiPhone4も同じ処理を受けますが、これは最適ではありません。
私たちがこれを解決するために行ったことは、デバイスの高さを計算してサイズを返すヘルパー関数を書くことです。
この正確な実装は正確に何をしたいではないかもしれないが、それは私たちのために持っているとして、次のいくつかのバリエーションは、おそらくあなたのためにこれを解決するだろうが:
var React = require('react-native')
var {
Dimensions
} = React
var deviceHeight = Dimensions.get('window').height;
export default (size) => {
if(deviceHeight === 568) {
return size
} else if(deviceHeight === 667) {
return size * 1.2
} else if(deviceHeight === 736) {
return size * 1.4
}
return size
}
次に、このようにそれを使用します。
var normalize = require('./pathtohelper')
fontSize: normalize(14),
borderWidth: normalize(1)
これは、getPizelRatioForLayoutSize
の元の実装により近い別の方法です。唯一の問題は、あなたがまだiPhone6とiPhone4の値が同じに返さ取得しているので、それは少し正確ですが、getPizelRatioForLayoutSize
ネイティブより良い作品:このようにそれを使用すると
var React = require('react-native')
var {
PixelRatio
} = React
var pixelRatio = PixelRatio.get()
export default (size) => {
if(pixelRatio == 2) {
return size
}
return size * 1.15
}
:
var normalize = require('./pathtohelper')
fontSize: normalize(14),
borderWidth: normalize(1)
うわー、ありがとう。私はそれをできるだけ早くテストし、あなたに知らせるでしょう。 – Cherniv
素晴らしいです、これが助けてくれることを願っています。 –
それは私に良い方向を与えましたが、最終的に私が使用しているコードは少し異なります:https://jsfiddle.net/97ty7yjk/ – Cherniv