UIView の自動サイズ変更リソース
-
22-09-2019 - |
質問
私はカスタム UIView の自動サイズ変更に取り組んできましたが、Apple はこれについてほとんど何も言いません。さらに、SO のフィードバックに基づくと、Apple のドキュメントはいくつかの領域で実際に間違っています。最後に、Interface Builder には 6 つのサイズ変更コンポーネントがあり、Interface Builder には 6 つのサイズ変更コンポーネントがありますが、 setAutoresizingMask:
それらはまったく相関関係がないようです。たとえば、IB で幅スプリングを設定すると、 autoresizingMask
に UIViewAutoresizingFlexibleWidth
デバイスを回転させるとき。
iPhone でのサイズ変更の仕組みについて学ぶための良いリソースはありますか?
編集:
私は Apple が使用する contentMode などの基本概念を理解しており、UIView ドキュメントを読みました。SDK でプログラム的に利用できるものに関して、IB 設定が何を行うのかをもう少し詳しく説明するものを探しています。
解決
autoresizingMask
にUIViewAutoresizingFlexibleWidth
設定、幅スプリング設定することと等価である、プラスInterface Builderで左右の支柱(ストラットは、エッジが の柔軟でないことを意味します)。あなただけの幅春ではなく、左右のストラットを設定する動作を再現したい場合は、セットautoresizingMask
にUIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin
他のヒント
私はIOSの自動サイズ変更を理解する上で、この記事が役に立ったと評価しています。
http://www.techotopia.com/index.php/IOS_4_iPhone_Rotation,_View_Resizing_and_Layout_Handling
アップルから:
...このマスクの値を指定するには、 UIViewAutoresizing は、C のビットごとの OR 演算子を使用します。これらを組み合わせる constants では、ビューのどの寸法を拡張するかを指定できます。 スーパービューを基準に縮小します。このプロパティの既定値 は UIViewAutoresizingNone で、ビューが まったくサイズ変更されました。
...例えば このプロパティに UIViewAutoresizingFlexibleWidth と UIViewAutoresizingFlexibleRightMargin 定数ですが、 uiviewautoreisingflexibleleftmargin定数は含まれません。 したがって、 その ビューの左マージンの幅は固定されています しかし、そのビューの 幅と右余白は変更される場合があります。したがって、ビューは スーパービューの左側、ビューの幅とギャップの両方 ビューの右側に増加します。
自動サイズ変更動作で正確なレイアウトが提供されない場合、 ビューが必要な場合は、カスタムコンテナビューを使用して、 その layoutSubviews メソッドを使用して、サブビューをより正確に配置できます。
したがって、ビューをスーパービューの上部と右側に固定して配置したい場合は、次のようなマスクを適用します。
[myView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin];
はスーパーが contentMode のようなパラメータを有し、 autoresizesSubviews とWICHすべての autoresizingMask のサブビューを行うリサイズ動作
は記録のために、私は時間のために私の頭に傷。
:最後に、これはトリックをしましたlabel.contentMode = UIViewContentModeScaleAspectFit;
私はGoogleで検索し、誰が(誰もがラベルがadjustsFontSizeToFitWidth / minimumFontSizeなどを設定する1行、あるべきかを示します)、この詳細を明確にするようです。 おそらく、このプロパティのデフォルト値が変わったのか?私は、iOS 4.3にしています。