iOS-Swift-setContentCompressionResistancePriority与setContentHuggingPri

两个UILabel放在同一行,需要设置它们的抗压缩和抗拉伸属性。

class MyView: UIView {
 
    lazy var leftLabel = UILabel()
    lazy var rightLabel = UILabel()
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        backgroundColor = .lightGray
        
        leftLabel.text = "左边的文案"
        leftLabel.textColor = .red
        leftLabel.backgroundColor = .red.withAlphaComponent(0.2)
        rightLabel.text = "右边的文案"
        rightLabel.textColor = .blue
        rightLabel.backgroundColor = .blue.withAlphaComponent(0.2)
        
        leftLabel.addTo(self).snp.makeConstraints { make in
            make.left.equalToSuperview()
            make.centerY.equalToSuperview()
        }
        rightLabel.addTo(self).snp.makeConstraints { make in
            make.left.equalTo(leftLabel.snp.right)
            make.right.equalToSuperview()
            make.centerY.equalToSuperview()
        }
        
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
}

短文字情况:默认拉伸左边

截屏2022-03-21 下午3.00.23.png

短文字、左边抗拉伸属性设置为高:拉伸右边

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

截屏2022-03-21 下午7.33.35.png

文字超长:默认压缩右边

截屏2022-03-21 下午7.29.07.png

文字超长、左边抗压缩属性设置为低:压缩左边

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

截屏2022-03-21 下午7.30.22.png

总结

  1. setContentHuggingPriority是抗拉伸属性,属性低更容易被拉伸,被拉伸是指控件的宽度超过文字宽度,用空白填充
  2. setContentCompressionResistancePriority是抗压缩属性,属性低更容易被压缩,被压缩是指控件的宽度不足以放下文字,用省略号...代替
  3. 同一个控件的拉伸和压缩是两个独立的属性,可以同时设置setContentHuggingPriority与setContentCompressionResistancePriority,互不冲突
  4. 基于布局先放左边文字的情况,默认拉伸左边、压缩右边。也就是默认左边的抗拉伸属性更低,右边的拉压缩属性更低
posted @   rome753  阅读(306)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示