web-dev-qa-db-ja.com

iOS 14無効なフレームディメンション(ネガまたは非有限)

My Appは、いくつかのパディングを使用してGeometryReaderを使用して、NavigationView内でビューフレームディメンションを設定します。

IOS 14以降、次のエラーメッセージが表示されます。

無効なフレームディメンション(ネガティブまたは非有限)

テストするコードの例を次に示します。

import SwiftUI

struct ContentView: View {

    let padding:CGFloat = 16.0

    var body: some View {
        NavigationView {
            GeometryReader { p in
        Text("Hello, world!")
            .frame(width: p.size.width - padding)
            .padding()
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
 _

NavigationViewの削除問題を修正しますが、NavigationView内のコンテナビューの現在の幅と高さが必要です。

なにか提案を?

10
Franco

MacOS 11.1でテストした場合、GeometryReaderがビューINITの開始時に実際のサイズをすぐに返すことができなかったことを発見しましたが、初めて取得されたサイズは正しくありませんでした。この警告を避けます

Warning: Invalid frame dimension (negative or non-finite)

1
Patrick Fu

私は同じ問題に遭遇しました。 NavigationViewにあるのはこれを引き起こす理由の下にはありませんが、回避策はNavigationView全体をGeometryReaderでラップし、GeometryProxyをツリーの下に渡すことです。

0
Chris Wooden