[解決済み] React Nativeで画像の高さを自動調整する
2023-03-20 22:17:13
質問
React Nativeアプリで、APIから未知の寸法の画像を取得しています。希望する幅がわかっている場合、高さを自動的に拡大縮小するにはどうすればよいですか。
例を挙げます。
幅を
Dimensions.get('window').width
. 高さを設定し、同じ比率を保つにはどうすればよいですか?
export default class MyComponent extends Component {
constructor(props) {
super(props)
this.state = {
imgUrl: 'http://someimg.com/coolstuff.jpg'
}
}
componentDidMount() {
// sets the image url to state
this.props.getImageFromAPi()
}
render() {
return (
<View>
<Image
source={uri: this.state.imgUrl}
style={styles.myImg}
/>
<Text>Some description</Text>
</View>
)
}
}
const styles = StyleSheet.create(
myImg: {
width: Dimensions.get('window').width,
height: >>>???what goes here???<<<
}
)
どのように解決するのですか?
これを試してみてください。
import React, { Component, PropTypes } from "react";
import { Image } from "react-native";
export default class ScaledImage extends Component {
constructor(props) {
super(props);
this.state = { source: { uri: this.props.uri } };
}
componentWillMount() {
Image.getSize(this.props.uri, (width, height) => {
if (this.props.width && !this.props.height) {
this.setState({
width: this.props.width,
height: height * (this.props.width / width)
});
} else if (!this.props.width && this.props.height) {
this.setState({
width: width * (this.props.height / height),
height: this.props.height
});
} else {
this.setState({ width: width, height: height });
}
});
}
render() {
return (
<Image
source={this.state.source}
style={{ height: this.state.height, width: this.state.width }}
/>
);
}
}
ScaledImage.propTypes = {
uri: PropTypes.string.isRequired,
width: PropTypes.number,
height: PropTypes.number
};
というプロップとしてURLを渡しています。
uri
. を指定することができます。
width
として指定することができます。
Dimensions.get('window').width
として、それをカバーする必要があります。
高さを設定したいものがわかっていて、比率を維持するために幅を変更する必要がある場合にも、この方法が有効であることに注意してください。その場合は
height
プロップの代わりに
width
の代わりに
関連
-
[解決済み] React NativeとReactの違いは何ですか?
-
[解決済み] React / React Nativeでコンストラクタを使用する場合とgetInitialStateを使用する場合の違いとは何ですか?
-
[解決済み] react-nativeでキーボードを隠す
-
[解決済み] React Native - StyleSheetを使用する利点は、プレーンなオブジェクトと比較して何ですか?
-
[解決済み] React Nativeのグローバルスタイル
-
[解決済み] React Nativeのエラー。"javaのバージョンを'9.0.1'から決定できませんでした。"
-
[解決済み] react nativeで<Text>のテキストを大文字にする方法
-
[解決済み] React Native Android ビルドエラー MainActivity.java:29: error: cannot find symbol
-
[解決済み] React Nativeで「リモートデバッガがバックグラウンドのタブにある」という警告を消す。
-
[解決済み] React Nativeのプロジェクト名を変更しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] TouchableNativeFeedback、TouchableHighlight、TouchableOpacityをいつ使うか?
-
[解決済み] React Nativeのグローバルスタイル
-
[解決済み] Androidのフラットリスト(React Native)でスクロールバーを隠す
-
[解決済み] React Nativeのエラー。"javaのバージョンを'9.0.1'から決定できませんでした。"
-
[解決済み] React Native アニメーション、完全なイベント
-
[解決済み] React Nativeで電話をかけるには?
-
[解決済み] React Nativeのスタイルはグラデーションをサポートしていますか?
-
[解決済み] Xcode throws 'atomic_notify_one<unsigned long>' is unavailable
-
[解決済み] React Nativeのプロジェクト名を変更しますか?
-
[解決済み] React Native のフラットリスト、カラム、最後のアイテム幅