I\'m getting a thread issue that says "Invalid frame dimension (negative or non-finite)."
Here\'s my code:
struct CellSty
Because it is documented interface contract:
/// - Parameters:
/// - width: A fixed width for the resulting view. If `width` is `nil`,
/// the resulting view assumes this view's sizing behavior.
/// - height: A fixed height for the resulting view. If `height` is `nil`,
/// the resulting view assumes this view's sizing behavior.
/// - alignment: The alignment of this view inside the resulting view.
/// `alignment` applies if this view is smaller than the size given by
/// the resulting frame.
///
/// - Returns: A view with fixed dimensions of `width` and `height`, for the
/// parameters that are non-`nil`.
@inlinable public func frame(width: CGFloat? = nil, height: CGFloat? = nil, alignment: Alignment = .center) -> some View
whereas modifier type with min/max arguments allows flexible constraints (not copied here - read in generated SwiftUI module).
Basically .frame will take the given values and return another view that is updated with the values you put.
If you omit one of the parameters or set it to nil, then it will take the respective width/height value of the previous view.
Test code:
struct ContentView: View {
@State var keyValue = ""
var body: some View {
VStack(spacing: 10) {
Text("Something")
.background(Color.blue)
Text("Something")
.frame(width: 300, height: nil, alignment: .center)
.background(Color.blue)
Text("Something")
.frame(width: nil, height: 200, alignment: .center)
.background(Color.blue)
Text("Something")
.frame(width: nil, height: nil, alignment: .center)
.background(Color.blue)
}
}
}
.infinity
(Apple doc on .infinity) is of type Float
, so there's no way for .frame
not to except it, but it still can create problems. (Thus the thread issue)
Thanks to Mark Moeykens for the help in getting me to this answer!