博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS AutoLayout使用技巧
阅读量:6717 次
发布时间:2019-06-25

本文共 2591 字,大约阅读时间需要 8 分钟。

关于ContentCompressionResistance, ContentHugging运用

如下图效果图,两个Label并列在同一排上,左边label自适应,右边label(红色)要使得内容全部展示,如果左边label内容很少,那么右边label随着左边label动。

使用Snapkit 约束实现效果

使用xib AutoLayout 约束实现效果

xib AutoLayout关键设置

1.设置好相关约束,详见demo.

2.把左边label Compression horizontal降低至250(默认750,设置低于750任意值均可),右边红色label无需修改。

如下图

Snapkit 约束关键代码

import UIKitimport SnapKitclass SnpTableViewCell: UITableViewCell {       var placeLabel = UILabel()     var distanceLabel = UILabel()    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {        super.init(style: style, reuseIdentifier: reuseIdentifier)        setupUI()    }        required init?(coder aDecoder: NSCoder) {        fatalError("init(coder:) has not been implemented")    }        override func awakeFromNib() {        super.awakeFromNib()    }            /// MARK: -setup UI    func setupUI() {                distanceLabel.textColor = UIColor.red        if #available(iOS 8.2, *) {
distanceLabel.font = UIFont.systemFont(ofSize: 17, weight: UIFont.Weight.semibold) } else { distanceLabel.font = UIFont.boldSystemFont(ofSize: 17) } contentView.addSubview(placeLabel) contentView.addSubview(distanceLabel) placeLabel.snp.makeConstraints { $0.left.equalToSuperview().offset(16) $0.top.bottom.equalToSuperview() } distanceLabel.snp.makeConstraints{ $0.top.bottom.equalToSuperview() $0.left.equalTo(placeLabel.snp.right).offset(32) $0.right.lessThanOrEqualToSuperview().offset(-16) } //set CompressionResistance ContentHugging distanceLabel.setContentCompressionResistancePriority(.required, for: .horizontal) distanceLabel.setContentHuggingPriority(.required, for: .horizontal) placeLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) placeLabel.setContentHuggingPriority(.required, for: .horizontal) } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) // Configure the view for the selected state } }复制代码

关键设置代码是:

//set CompressionResistance  ContentHugging        distanceLabel.setContentCompressionResistancePriority(.required, for: .horizontal)        distanceLabel.setContentHuggingPriority(.required, for: .horizontal)                placeLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)        placeLabel.setContentHuggingPriority(.required, for: .horizontal)复制代码

关于详细实现过程,及原理待续。。。。

转载地址:http://anumo.baihongyu.com/

你可能感兴趣的文章
[ACM_数据结构] HDU 1166 敌兵布阵 线段树 或 树状数组
查看>>
SaveFileDialog与Castle(ActiveRecord)有冲突??
查看>>
C#~异步编程再续~await与async引起的w3wp.exe崩溃
查看>>
指针,c语言的灵魂
查看>>
[Erlang 0005] net_kernel:monitor_nodes 订阅node连接\断开消息
查看>>
第 30 章 Linux
查看>>
5.5. git-daemon 服务器
查看>>
浅谈Windows环境下DOS及MS-DOS以及常见一些命令的介绍
查看>>
工具系列~WebMatrix搭建WEB站点
查看>>
JAVA 之 多态 抽象 接口
查看>>
[LintCode] Integer to Roman 整数转化成罗马数字
查看>>
日期控件
查看>>
mysql 如何修改、添加、删除表主键
查看>>
【Maven】3.使用IntelliJ IDEA 使用本地搭建的maven私服,而不是使用默认的maven设置...
查看>>
Navi.Soft31.WinForm框架(含下载地址)
查看>>
Charles配置抓包HTTP,HTTPS
查看>>
[Everyday Mathematics]20150109
查看>>
RSA(非对称加密算法、公钥加密算法)
查看>>
一个执行计划异常变更的案例 - 外传之SQL AWR
查看>>
获取 metadata 过程详解 - 每天5分钟玩转 OpenStack(167)
查看>>