LoginSignup
75
69

More than 5 years have passed since last update.

Auto Layout 固有サイズに関するメモ

Last updated at Posted at 2014-08-15

固有サイズ(intrinsic content size)

イメージやテキスト用のビューについて、そのコンテンツを圧縮する、切り出すことなく表示するために必要な最小サイズのこと。
例えばボタンなら、タイトルとなる文字列が短くなったり長くなったりするのに合わせて、固有サイズが変わる。
これは、サイズに関するその他の制約が存在しない、または優先度が低い場合に有効となる。

固有サイズは、ビューのプロパティintrinsicContentSizeに設定される。

- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize

すべての制約(サブビューの制約含めて)を考慮して、最適なサイズを返却する。
制約を考慮する際に、サブビューの固有サイズが利用される。

targetSize description
UILayoutFittingCompressedSize コンテンツを表示するための最小サイズを指定する
UILayoutFittingExpandedSize コンテンツを表示するための最大サイズを指定する

Content Compression Resistance Priority

固有サイズより小さなサイズの制約が設定されたときに、サイズを決定するために利用される優先度。
デフォルトでは高さ、幅ともに750が設定されている。

[私見]固有サイズより小さなサイズの制約が有効になるとコンテンツがすべて表示されない可能性があるので、固有サイズ自体の制約は高めの優先度になっていると考えられる。

Content Hugging Priority

固有サイズより大きなサイズの制約が設定されたときに、サイズを決定するために利用される優先度
デフォルトでは高さ、幅ともに251が設定されている。
[私見]固有サイズより大きなサイズの制約は、デザイン上の意味を持つ場合もあると思うので、固有サイズ自体の制約は低めの優先度になっていると考えられる。

システム定義の優先度、IBの作業領域

enum {
   UILayoutPriorityRequired = 1000,
   UILayoutPriorityDefaultHigh = 750,
   UILayoutPriorityDefaultLow = 250, // Content Hugging Priority には251が設定
   UILayoutPriorityFittingSizeLevel = 50,
};
typedef float UILayoutPriority;

スクリーンショット_2014-08-15_9_10_46.png

75
69
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
75
69