🔭

【SwiftUI】maxWidth vs maxWidth 観測隊

2024/10/20に公開

maxWidth vs maxWidthが、その値によって結果が変わることが発生し、この件の観測を行った。

観測環境

Xcode 16.0

コード

ForEach(1..<25, id: \.self) {i in
    HStack {
        Text("\(i * 20)")
            .frame(maxWidth: CGFloat(i) * 20)
            .border(.black)
        Text("\(500 - i * 20)")
            .frame(maxWidth: 500 - CGFloat(i * 20))
            .border(.black)
    }
}

結果

400 vs 100のときは100の方が確保されて400の方は削られる。
小さい方が優先される「お兄/姉ちゃんだから我慢しなさい」的な制御である。

考察

「我慢しなさい」と書いたが実際は

  1. 半分ずつが提案される
  2. 食べきれないものが残される
  3. 残されたものは余裕のある方に提案される
  4. 余裕のある方は提案を受け入れる

というものかと思われる。半分ずつが提案されて2人とも食べ切れる場合はそこで終わる。

Discussion