問題タブ [hstack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
picker - SwiftUI - HStack で 2 つのピッカーを並べて配置してもピッカーのサイズが変更されない
私の目標は、2 つのピッカーを横に並べて配置し、各ピッカーが画面の半分の幅を占めるようにすることです。画面の幅に収まり、同じ幅の 2 つのコンポーネントを持つa を想像してみてくださいUIPickerView
。これが、私が SwiftUI で再作成しようとしているものです。
SwiftUI のピッカーは現在複数のコンポーネントを許可していないため、私にとって明らかな代替手段は、2 つのピッカーを .xml 内に配置することでしたHStack
。
テスト プロジェクトのコード例を次に示します。
そして、ここにキャンバスがあります:
ピッカーは、私が期待するように画面の幅の半分にサイズ変更されません。それらはサイズを保持し、代わりにコンテンツ ビューの幅を引き伸ばし、その過程で他の UI 要素の幅をゆがめます (これは、他のプロジェクトでこれを試みたときにわかりました)。
必要な効果を得るために使用できることはわかっていますUIViewRepresentable
が、これを使用しようとしている目的の複雑さを考えると、SwiftUI の方がはるかに使いやすいでしょう。
2 つのピッカーを の中に配置HStack
してもサイズが適切に変更されないのはバグですか? それとも、SwiftUI のピッカーの幅が固定されていて変更できないのでしょうか?
アップデート
を使用しGeometryReader
て、ピッカーのサイズを希望どおりに変更することに成功しましたが、完全にはできませんでした。
補足: を使用せずGeometryReader
に、各ピッカーのフレームを に設定するだけで、これと同じ不完全な結果を実現することもできます.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
。
コード例は次のとおりです。
そして、ここにキャンバスがあります:
GeometryReader を使用した HStack のピッカー
ピッカーは私が望む外観に近づいていますが、サイジングはまだわずかにずれており、真ん中で互いに重なっています.