阅读 646

iOS小知识之SnapKit的抗拉伸抗压缩属性的使用

SnapKit使用的人应该在大多数,可能有大多数人,包括我,之前并没有了解使用到SnapKit的抗拉伸、抗压缩属性,今天我们来看一下如何使用。

HuggingPriority-抗拉伸

在我们平常开发中经常会遇到这种情况,有两个View放在同一行的情况,如果两个View不能够填满整个空间,一般的做法是固定一个View的长度,拉伸另一个View,如果不固定某一View的长度,我们就不能确定哪一个View会被拉伸。
这时我们设置其中不需要拉伸View的HuggingPriority为high,就可以让其不被拉伸。 API:func setContentHuggingPriority( _ priority: UILayoutPriority, for axis: NSLayoutConstraint.Axis),第一个参数为优先级,第二个参数为水平方向或者竖直方向

截屏2021-10-19 下午4.03.15.png

如图这种情况,我们可以设置左边Label的抗拉伸强度为defaultHigh,这样在左右两边的Label有空隙的时候,会拉伸右边的Label。实现代码如下:

leftLabel.snp.makeConstraints { make **in**

    make.top.equalToSuperview().offset(200)

    make.left.equalToSuperview().offset(20)

    make.right.equalTo(rightLabel.snp.left).offset(-10).priority(.medium)

}

leftLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal)

rightLabel.snp.makeConstraints { make **in**

    make.top.equalTo(leftLabel)

    make.left.equalTo(leftLabel.snp.right).offset(10).priority(.medium)

    make.right.equalToSuperview().offset(-20)

}复制代码
CompressionResistancePriority-抗压缩

与HuggingPriority-抗拉伸相对应的就是CompressionResistancePriority-抗压缩。 API为func setContentCompressionResistancePriority( _ priority: UILayoutPriority, for axis: NSLayoutConstraint.Axis),第一个参数为优先级,第二个参数为水平方向或者竖直方向.
如下图所示

截屏2021-10-19 下午4.13.07.png

如上图所示,两个label中,右边label文字过长,在布局中如果不限定某一lable的长度,那其中某一个的label将会被压缩,如果我们设置leftLabel的抗压缩属性CompressionResistancePriority为high,设置rightLabel的CompressionResistancePriority为low,那么就会自动拉伸RightLabel,而leftLabel就会维持原状。实现代码如下

leftLabel.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)

rightLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)复制代码

这样就可以不用限定某一个View的宽度,就可以自动拉伸需要拉伸或者压缩的View。


作者:叶秋主
链接:https://juejin.cn/post/7021501940618133535


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐