美文网首页基础
动态修改约束的优先级

动态修改约束的优先级

作者: 秋叶红90 | 来源:发表于2020-04-26 15:33 被阅读0次

1.动态修改约束的优先级
优先级可根据数字设置范围 0~1000; 系统框架提供

required(1000)、
defaultHigh(750)、
defaultLow(250)、
fittingSizeLevel(50)
设置约束时,默认的优先值就为required(1000),所以我们在等界面运行起来之后再把它改为其他的值时会报错,例如:1000 改为 250 或 把 250改为 1000
会报如下错误:

Mutating a priority from required to not on an installed constraint (or vice-versa) is not supported. You passed priority 250 and the existing priority was 1000.'
所以我们只能在一开始初始化约束的时候就把优先值设置为1000 以下就可以随便修改约束优先值为1000以下的任何正数值。

  1. 触发约束变化包括
    Activating或Deactivating
    设置constant或priority
    添加和删除视图
    遇到约束变化会重新计算layout,获取新值后会call它的superview.setNeedsLayout()

3.关于使用第三方框架 SnapKit 或 masonry
使用 updateConstraints 方法时一般只是在原有的约束上面修改常常量值, 不可以变更约束的对象, 约束的属性, 约束的优先值

使用 remakeConstraints 时,应注意更本视图相关的约束全部会移除后再重新添加你想要的约束, 包括该视图约束相关的子视图约束也会被清除

当我们想拿到 约束时,只能用一个为外部的变量获取,例如:

4、可以自适应的控件
Hugging priority让这些控件不要大于某个设定的值,默认优先级为250。例如:三个 UIlaebl 水平布局, 当他们的文本总长度超出了屏幕的宽度时,你想其中的一个 Label 的文案优先展示出来时,可以把 Hugging priority 设的比其他两个优先级高
Content Compression Resistance就是让控件不要小于某个设定的值,默认优先级为750

相关文章

  • 关于动态布局约束的一点记录

    1.动态修改约束的优先级 优先级可根据数字设置范围 0~1000; 系统框架提供 required(1000)、 ...

  • 动态修改约束的优先级

    1.动态修改约束的优先级优先级可根据数字设置范围 0~1000; 系统框架提供 required(1000)、de...

  • 9.5 AutoLayout约束的优先级

    9.5 AutoLayout约束的优先级 AutoLayout约束的优先级.pngAutoLayout约束的优先级...

  • iOS 使用Masonry的mas_updateConstrai

    当约束出现冲突的时候,优先级高的约束覆盖优先级低的约束。具体优先级可以放在约束链的结束处。通过 priority(...

  • 《Auto Layout Guide》笔记

    概念 约束优先级 所有约束都有1-1000的优先级。优先级为1000的约束是必须的。其它约束都是可选的。 注意:不...

  • iOS动态修改xib约束

    小编喜欢用xib布局UI,因此为了适配不同屏幕 就需要将IB上的约束拖入到类中,程序启动后修改NSLayoutCo...

  • 自动布局

    约束优先级:在Autolayout中每个约束都有一个优先级,优先级的范围是1 ~ 1000;创建一个约束,默认的优...

  • 自动布局

    约束优先级:在Autolayout中每个约束都有一个优先级,优先级的范围是1 ~ 1000;创建一个约束,默认的优...

  • Mansonry 几个不常见使用方法

    优先级 Masonry可以设置约束的优先级,优先级分为priorityHigh, priorityMedium, ...

  • 使用Storyboard动态修改约束

    很好用的第三方约束框架“Masonry”,可以随时修改约束: 现在,我们需要在Storyboard或xib中动态修...

网友评论

    本文标题:动态修改约束的优先级

    本文链接:https://www.haomeiwen.com/subject/wqfjwhtx.html