如何用SnapKit让UIView从父视图底部向上偏移自身一半高度
SnapKit视图向上偏移自身一半高度的布局方案
需求说明
- 用SnapKit布局一个UIView(示例高度设为200)
- 原本将视图固定在父视图底部
- 现在需要让该视图沿Y轴向上偏移自身高度的一半
错误代码尝试
self.tempView.snp.makeConstraints { $0.leading.equalToSuperview().offset(-50) $0.trailing.equalToSuperview().offset(50) $0.height.equalTo(self.tempView.snp.width) $0.bottom.equalToSuperview().offset(self.tempView.snp.height / 2) }
正确实现代码
self.tempView.snp.makeConstraints { make in make.leading.equalToSuperview().offset(-50) make.trailing.equalToSuperview().offset(50) make.height.equalTo(make.width) // 向上偏移自身高度的一半,用dividedBy处理约束比例,offset取负数实现向上偏移 make.bottom.equalToSuperview().offset(-make.height.dividedBy(2)) }
关键说明
- SnapKit中不能直接对
snp.height使用/运算符,需用dividedBy()方法构建比例约束 - 向上偏移需设置负的offset值,因为offset为正时会向下偏移,负则向上
- 闭包内使用
make.width替代self.tempView.snp.width,写法更简洁规范
内容的提问来源于stack exchange,提问作者KimJitae
相关产品推荐
相关产品推荐

