私はreact-nativeでアプリケーションを開発しています。 iPhone 6では正常に動作するUIを作成しましたが、iPhone5以下のバージョンでは正常に動作しません。これをどのように修正すればよいですか?
固定の幅と高さを使用してアプリを設計しましたか?間違いなくflexboxの機能を使用し、固定サイズの設定をできるだけ避けるようにしてください。 flexプロパティ を使用して、_<View />
_は他の人との関係を使用する必要があり、そのページの他のプロパティを使用して、さまざまな画面サイズで目的の結果が得られるように要素を柔軟にレイアウトできます。
_<ScrollView />
_ が必要な場合もあります。
固定サイズが必要な場合は、Dimensions.get('window')
を使用できます。
UIを構築するときは、proportionについて考える必要があります。
1、幅にはpercentage(%)
を使用し、高さにはaspectRatio
を使用します。その逆も同様です。
container: {
width: "100%",
aspectRatio: 10 / 3, //height will be "30%" of your width
}
2、ジョブの割合にflexを使用することはできません。たとえば、リストに任意のサイズのアイテムがあり、それらを共有したい場合等しいサイズ。それぞれにflex: 1
を割り当てます
3、ピクセルの代わりにEStyleSheetのrem
を使用してください 。 rem
はスケールfatorです。たとえば、rem
が2で、「11rem」が「11 * 2」=「22」になる場合です。画面サイズにrem
の比率を設定すると、UIは任意の画面サイズに合わせて拡大縮小されます。
//we define rem equals to the entireScreenWidth / 380
const entireScreenWidth = Dimensions.get('window').width;
EStyleSheet.build({$rem: entireScreenWidth / 380});
//how to use rem
container: {
width: "100%",
aspectRatio: 10 / 3, //height will be "30%"
padding: "8rem", //it'll scale depend on the screen sizes.
}
4、ボックスからスケールアウトする可能性のあるコンテンツにはscrollViewを使用します。たとえば、TextView
5、ピクセルの使用を検討するたびに、方法3でrem
を使用することを検討してください。
詳細な説明については、こちらの記事をご覧ください。 開発するための7つのヒントReactすべての画面サイズのネイティブUI
画面サイズに応じて、サイズを動的に計算する必要があります。
_import { Dimensions, StyleSheet } from 'react-native'
[...]
const { width, height } = Dimensions.get('window')
[...]
const styles = StyleSheet.create({
container: {
flex: 1.
flexDirection: 'column',
},
myView: {
width: width * 0.8, // 80% of screen's width
height: height * 0.2 // 20% of screen's height
}
})
_
TabbarIOS
を使用している場合は、Dimensions.get('window')
で画面の高さが全体になることに注意してください。これは、タブバーが修正されていることを考慮する必要があることを意味します。 -高さ56。たとえば、TabbarIOS
を使用する場合:
_const WIDTH = Dimensions.get('window').width,
HEIGHT = Dimensions.get('window').height - 56
_
次に、上記のようにWIDTHとHEIGHTを使用します。