問題タブ [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.
ios - カスタム UIView の IntrinsicContentSize はコンテンツをストレッチします
IntrinsicContentSize を使用/提供するカスタムを作成したいと思います。UIView
これは、高さがコンテンツに依存するためです (高さがテキストに依存するラベルのように)。
既存のビューによって提供される IntrinsicContentSize の操作方法に関する多くの情報を見つけましたが、カスタムで IntrinsicContentSize を使用する方法については、ほんの少ししか見つかりませんでしたUIView
。
初期高値は
50
メソッドは、サイズの
draw
灰色の四角形を描画します25
高さはに変更され
300
、invalidateIntrinsicContentSize()
呼び出されますインスタンスを InterfaceBuilderに配置すると、
MyView
問題なく動作します。ビューは高さの制約を必要としません
ただし、IB では の初期の高さ50
が使用されます。なんで?IB は灰色の四角形を描画するため、draw
メソッドが呼び出されます。では、なぜ高さが 300 に変更されないのでしょうか。
また奇妙なこと: 背景色を設定すると、それも描画されますが、super.draw(...)
呼び出されません。これは意図したものですか?
高300
さ25
_ ただし、シミュレーターでプロジェクトを実行すると、結果は異なります。
- ビューの高さ =
300
- OK - コンテンツの高さ (= 灰色の四角形) = 150 (ビューの高さの半分) - OK ではありません
25
ビューに対する相対的な高さを維持するために、コンテンツが元の高さから引き伸ばされたようです。どうしてこれなの?