Content Hugging Priority 和 Content Compression Resistance Priority

1> size classes

  1.  可以限制某个 storyboard 显示在什么样的屏幕上,如 当前 storyboard 在iPhone 的左斜右斜或 iPad上是否显示..

2> UIView 的 Content Hugging Priority 和 Content Compression Resistance Priority 属性

  Hugging 表示内容过少时, 需要保持原来的大小的优先级,Compression Resistance值表示内容过多时, 需要保持原来的大小的优先级。

  这两个优先级可用于没有设置 width 约束, 但是设置了左右边界的情况, 以及实际内容的宽度不固定的情况.

一, 场景一: 2个 UILabel 的内容挤压

  1.  在一个 UIView 中, 摆放 2个 UILabel, 左右各一, 内容不固定, 但是要求内容不能超过右边界. 因此只能设置左右边界, 代替设置宽度

  2.  改变左右 UILabel 的内容, 都超过正常范围, 理论上会被拉伸, 但由于左右边界的限制, 需要让其中一个 UILabel 显示省略号

  需要通过改变水平方向 horizontal的 Content Compression Resistance Priority 值, 来确定, 让哪个 UILabel 使用省略号适应这种拉伸变化.

  3.  左边的 UILabel 改成749, 右边的 UILabel 改成750, 可以看到左边的 UILabel 已经看不到了.右边的UILabel依旧显示省略号

  4.  左边的 UILabel 改成751, 右边的 UILabel 改成750, 可以看到左边的 UILabel 完全显示, 右边的UILabel依旧显示省略号

二, 场景二: 下载后的图片大小不固定

  1.  如果宽度约束的优先级小于抗压缩优先级,则会先被拉伸.....

  2. 例如,图片本身大小133*133,抗压优先级CompressionResistance为750,显式宽度约束为120优先级为1000。

  由于显示宽度优先级大于抗压优先级,所以最终图片宽度为120。

  3. 但是,当我们降低显式宽度约束的优先级,令其小于抗压优先级时,仍以自身宽度133为主. UIlabel 也是一样.

  4. (PS:只能比较 Hug 和宽度等约束优先级的大小以及CompressionResistance和宽度约束优先级的大小, 比较Hug和CompressionResistance的大小, 是没意义的.)

3>  背景图片的宽度跟着文字内容的多少变化

  1.  可以先给 UILabel 设置一个固定宽度约束,让背景图片的宽度约束跟随着 UILabel 建立约束.

  2.  根据文字的内容,改变 UILabel 的宽度约束.背景图片就自动随文字拉伸了.

posted on 2016-02-01 18:31  活最好的自己  阅读(301)  评论(0编辑  收藏  举报

导航