Understanding constraints

制約の親子関係

  • 制約は親から子、サイズは子から親、親は子の位置を指定する
  • 詳細にいうと以下になる
    • widgetは制約を親から受け取る(制約とはwidthの最小・最大、heightの最小・最大)
    • 次に自分の子に目を通す。一つずつ制約を子要素に伝えどのサイズにしたいかを聞く
    • そして子を一つずつ配置する
    • 親に自分のサイズを伝える
  • ↑の例示をする(以下の画像のコンポーネントの場合・全て主語はWidget)
    1. Widgetが親要素に制約を聞く
    2. widthが80〜300, heightが30〜85と聞く
    3. paddingが5あるので子は最大widthが290heightが75となる
    4. 一つ目の子要素に↑の制約を伝え、そのサイズを受ける(290x20)
    5. 4の結果を引いたもの(290x55)を2つ目の子要素に伝え、そのサイズを受ける(140x30)
    6. ↑の結果から1つ目の子要素は(5, 5)で2つ目は(80, 25)に配置する
    7. 親に自分のサイズが300x60だと伝える

制限

以下の制限が存在する

  • 親要素からの製薬の中で自身のサイズを決めるので、好きなサイズになれるわけではない
  • 親要素が場所を決めるので、widgetは自分の位置を決めたり知ることができない
  • 親要素の位置もその親要素に影響を受けるので、Widgetのツリー全体を考慮しないと正確に場所やサイズはわからない
  • 子要素が親要素と異なるサイズを望んでいて親がそれを整列させるのに十分な情報を持っていないと、子要素のサイズは無視されるかもしれない。そのため整列の定義は具体的にしないといけない。