現象
以下のコードのように、SwiftUIでScrollViewを配置し、その中身の大きさをGeometryReaderを用いて取得すると、SimulatorのiPhone8・8Plus・iPadProや実機のiPhone7では正常らしい値(結果は後述)が得られるのですが、SimulatorのiPhone11・11Pro・11ProMaxでは不正な値が得られます。原因として考えられるものや、iPhone11系でも正しい値を得られる方法、あるいは、実機では正常に動く、自分以外の環境では再現されないなどありましたら教えていただきたいです。
ソースコード
ContentView.swift
Swift
1import SwiftUI 2 3struct ContentView: View { 4 var body: some View { 5 ScrollView(.vertical, showsIndicators: true) { 6 GeometryReader { geom in 7 Text("hoge") 8 .onAppear { 9 print(geom.size.height, geom.size.width) 10 } 11 } 12 } 13 } 14}
結果
Simulator iPhone 8 Plusの場合のDebug areaにprintされた内容
10.0 414.0
Simulator iPhone 11 Pro Maxの場合Debug areaにprintされた内容
10.0 0.0
試したこと
iPhone 11 Pro Maxの場合でも、ScrollViewがない場合は正常な値が出たことから、ScrollViewが原因だと思われます。
11ProMaxの場合、ScrollViewに.frame(width: 100)
などと付けてみてもwidthの出力は0.0のまま変わりませんでした。(8Plusなどではwidthの出力は100になりました。)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/08 10:05