参考:SnapKit - 修改约束
https://blog.csdn.net/longshihua/article/details/80289061
import SnapKit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <em> class ViewController: UIViewController { private var isUpdateSnapkitV = false private lazy var snapkitV : UIView = { let snapkitV = UIView() snapkitV.backgroundColor = UIColor.red return snapkitV }() override func viewDidLoad() { super.viewDidLoad() self.view.addSubview(snapkitV) snapkitV.addGestureRecognizer(UITapGestureRecognizer.init(target: self, action: #selector(reloadView))) snapkitV.snp.makeConstraints { (make) in make.size.equalTo(CGSize(width: 100, height: 100)) make.centerX.centerY.equalTo(view) } } override func updateViewConstraints() { //移除原有的重新添加 snapkitV.snp.remakeConstraints { (make) in if isUpdateSnapkitV{ make.size.equalTo(CGSize(width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.width)) } else { make.size.equalTo(CGSize(width: 100, height: 100)) } } //更新原有的不会添加 snapkitV.snp.updateConstraints { (make) in if isUpdateSnapkitV{ make.size.equalTo(CGSize(width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.width)) } else { make.size.equalTo(CGSize(width: 100, height: 100)) } } //最后一步在调用 super.updateViewConstraints() } } extension ViewController{<br><br> ///第一种更新动画方法 推荐 https://www.cnblogs.com/qingzZ/p/14005859.html<br><br><br>///第二种动画方法 不推荐 @objc private func reloadView(){ isUpdateSnapkitV.toggle() self.view.setNeedsUpdateConstraints() //标记为需要更新约束 self.view.updateConstraintsIfNeeded() //立即调用updateViewConstraints更新约束, 此方法只是更新了约束, 并没有刷新布局 UIView.animate(withDuration: 1.0) { self.view.layoutIfNeeded() //动画 刷新布局 } } }<br><br><br>设置内边距inset<br></em><em id= "__mceDel" > </em> |
bgView.snp.remakeConstraints { make in
make.edges.equalToSuperview().inset(UIEdgeInsets(top: 0, left: 16, bottom: 16, right: 16)).priority(.high);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2018-07-04 OC 线程操作3 - NSOperation 实现线程间通信
2018-07-04 OC 线程操作3 - NSOperation