默认的自动布局内容拥抱和内容压缩阻抗优先级值是什么?

时间:2016-04-28 19:43:48

标签: ios autolayout interface-builder

我正在尝试调试自动布局问题,并且知道内容拥抱和内容压缩阻力优先级的默认值会有所帮助。

他们是什么?它们是否特定于特定组件?我可以使用常量来引用它们吗?

关键字:UILayoutPriority

1 个答案:

答案 0 :(得分:29)

从Xcode 7.3开始,这些值是最新的。

Interface Builder默认优先级值:

将组件拖动到Interface Builder中时,您将获得以下优先级。注意:(250,750)代表250水平,750垂直。

+-------------------------+---------------+------------------------------+
|         Object          | Hugging (H,V) | Compression Resistance (H,V) |
+-------------------------+---------------+------------------------------+
| UIActivityIndicatorView | 750,750       | 750,750                      |
| UIButton                | 250,250       | 750,750                      |
| UIDatePicker            | 250,250       | 750,750                      |
| UIImageView             | 251,251       | 750,750                      |
| UILabel                 | 251,251       | 750,750                      |
| UIPageControl           | 250,250       | 750,750                      |
| UIPickerView            | 250,250       | 750,750                      |
| UIProgressView          | 250,750       | 750,750                      |
| UIScrollView            | 250,250       | 750,750                      |
| UISearchBar             | 250,250       | 750,750                      |
| UISegmentedControl      | 250,250       | 750,750                      |
| UISlider                | 250,250       | 750,750                      |
| UIStepper               | 750,750       | 750,750                      |
| UISwitch                | 750,750       | 750,750                      |
| UITabBar                | 250,250       | 750,750                      |
| UITextField             | 250,250       | 750,750                      |
| UITextView              | 250,250       | 750,750                      |
| UIToolbar               | 250,250       | 750,750                      |
| UIView                  | 250,250       | 750,750                      |
+-------------------------+---------------+------------------------------+

调查结果:

  • 所有对象的内容压缩阻力优先级都有750,750
  • 大部分人都有250,250作为内容拥抱优先级
  • UIImageViewUILabel都有251,251作为内容拥抱优先级
  • UIActivityIndicatorViewUIStepperUISwitch750,750作为内容拥抱优先级
  • UIProgressView已将{{1>}作为其内容拥抱优先级

程序化默认优先级值:

以编程方式创建对象(例如250,750)时,您将获得以下优先级。

UIButton()

调查结果:

  • IB实例化对象与以下对象的编程实例化对象之间存在内容拥抱优先级差异:UIDatePicker,UIImageView,UILabel,UIPageControl,UIPickerView,UISearchBar,UISegmentedControl,UISlider,UITabBar和UIToolbar。

程序化常量

+-------------------------+---------------+------------------------------+
|         Object          | Hugging (H,V) | Compression Resistance (H,V) |
+-------------------------+---------------+------------------------------+
| UIActivityIndicatorView | 750,750       | 750,750                      |
| UIButton                | 250,250       | 750,750                      |
| UIDatePicker            | 750,750       | 750,750                      |
| UIImageView             | 250,250       | 750,750                      |
| UILabel                 | 250,250       | 750,750                      |
| UIPageControl           | 750,750       | 750,750                      |
| UIPickerView            | 750,750       | 750,750                      |
| UIProgressView          | 250,750       | 750,750                      |
| UIScrollView            | 250,250       | 750,750                      |
| UISearchBar             | 250,750       | 750,750                      |
| UISegmentedControl      | 250,750       | 750,750                      |
| UISlider                | 250,750       | 750,750                      |
| UIStepper               | 750,750       | 750,750                      |
| UISwitch                | 750,750       | 750,750                      |
| UITabBar                | 250,750       | 750,750                      |
| UITextField             | 250,250       | 750,750                      |
| UITextView              | 250,250       | 750,750                      |
| UIToolbar               | 250,750       | 750,750                      |
| UIView                  | 250,250       | 750,750                      |
+-------------------------+---------------+------------------------------+

添加约束时(通过Interface Builder或以编程方式),其默认优先级为+----------------------------------+-------+ | Constant | Value | +----------------------------------+-------+ | UILayoutPriorityRequired | 1000 | | UILayoutPriorityDefaultHigh | 750 | | UILayoutPriorityDefaultLow | 250 | | UILayoutPriorityFittingSizeLevel | 50 | +----------------------------------+-------+