問題タブ [intrinsic-content-size]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
54 参照

ios - カスタム UIView の IntrinsicContentSize はコンテンツをストレッチします

IntrinsicContentSize を使用/提供するカスタムを作成したいと思います。UIViewこれは、高さがコンテンツに依存するためです (高さがテキストに依存するラベルのように)。

既存のビューによって提供される IntrinsicContentSize の操作方法に関する多くの情報を見つけましたが、カスタムで IntrinsicContentSize を使用する方法については、ほんの少ししか見つかりませんでしたUIView

  • 初期高値は50

  • メソッドは、サイズのdraw灰色の四角形を描画します25

  • 高さはに変更され300invalidateIntrinsicContentSize()呼び出されます

  • インスタンスを InterfaceBuilderに配置すると、MyView問題なく動作します。ビューは高さの制約を必要としません

ただし、IB では の初期の高さ50が使用されます。なんで?IB は灰色の四角形を描画するため、drawメソッドが呼び出されます。では、なぜ高さが 300 に変更されないのでしょうか。

また奇妙なこと: 背景色を設定すると、それも描画されますが、super.draw(...)呼び出されません。これは意図したものですか?

30025_ ただし、シミュレーターでプロジェクトを実行すると、結果は異なります。

  • ビューの高さ = 300- OK
  • コンテンツの高さ (= 灰色の四角形) = 150 (ビューの高さの半分) - OK ではありません

25ビューに対する相対的な高さを維持するために、コンテンツが元の高さから引き伸ばされたようです。どうしてこれなの?

ここに画像の説明を入力