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

动态修改约束的优先级

作者: 秋叶红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

    相关文章

      网友评论

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

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