Swift使用SnapKit给控件添加约束时出现的三个错误
来源:互联网 发布:电气控制图绘制软件 编辑:程序博客网 时间:2024/04/30 10:10
bug1:频繁显示约束冲突
1> 源代码
footerView.snp_makeConstraints { (make) -> Void in // 防止cell重用 self.bottomConstraint = make.top.equalTo(retweetView.snp_bottom).constraint make.left.equalTo(contentView.snp_left) make.right.equalTo(contentView.snp_right) make.width.equalTo(44)}
2> 在滚动屏幕时频繁报的错误
3> 原因
约束最后一行应该是高度等于44,而不是宽度等于44,宽度根据左右两边的约束已经可以确定了.所以再次设置宽度就约束冲突了.
4> bug解决
将width改为height后就可以了
bug2:显示的内容重叠到一起
1> 错误的源代码
没有错误提示:
if originalModel?.model?.pic_urls?.count > 0{ // 显示pictureView pictureView.hidden = false self.snp_updateConstraints(closure: { (make) -> Void in self.bottomConstranit = make.bottom.equalTo(pictureView.snp_bottom).constraint }) // 把配图视图的数据传递过来 pictureView.pic_urls = originalModel?.model?.pic_urls }else{ // 不显示pictureView pictureView.hidden = true self.snp_updateConstraints(closure: { (make) -> Void in self.bottomConstranit = make.bottom.equalTo(self.snp_bottom).constraint }) }
2> 错误截图
3> 原因
很明显底部约束设置错误;
有图片时显示正常,没图片时转发微博的内容全都跑到cell顶部了.说明没图片时底部约束设置错了.
4> 解决
将下述代码中的self改为contentLabel后即可解决
self.bottomConstranit = make.bottom.equalTo(self.snp_bottom).constraint
self.bottomConstranit = make.bottom.equalTo(contentLabel.snp_bottom).constraint
bug3: 图片有的显示,有的不显示,且collectionView中第一行的图片都不显示
1> 错误的源代码
iconView.snp_makeConstraints { (make) -> Void in make.left.equalTo(contentView.snp_left) make.top.equalTo(contentView.snp_right) make.width.equalTo(contentView.snp_width) make.height.equalTo(contentView.snp_height) }
2> 错误截图:
3> 错误原因
依然是图片框的约束设置错误;很明显源代码中第二行设置顶部约束时错设置成等于右侧了.
4> bug解决
将第二行代码最后的right改为top即可
综上:三次错误均为纯代码给控件添加约束时不细心导致的.约束错一点,显示出来的结果都偏差很远,所以以后给控件添加约束时一定要小心了.
1 0
- Swift使用SnapKit给控件添加约束时出现的三个错误
- swift约束之SnapKit的使用方式
- 使用storyboard添加控件,用代码为控件添加约束时,出现NSIBPrototypingLayoutConstraint冲突的解决办法
- 关于设置 UITableView 的 tableHeaderView为使用了 SnapKit 约束的自定义 view 时出现的 BUG 的处理
- 动态更新约束问题(SnapKit 的使用)
- snapkit的使用
- 使用SnapKit约束label、scrollview和tableview
- iOS.swift 关于swift的自动布局snapkit第三方的使用记录
- Swift如何使用Masonry和SnapKit
- Swift如何使用Masonry和SnapKit
- iOS - Swift 如何使用Masonry和SnapKit
- Swift 使用SnapKit实现 UICollectionViewCell 高度自适应
- Swift编程(六):Snapkit的启示录
- Swift的适配方案 -- Snapkit
- 添加控件的约束动画
- SnapKit/Masonry的使用简介
- Swift自动布局SnapKit(类似OC下的Massonry)的详细使用介绍
- SnapKit的扩展--添加数组控制约束,和九宫格布局,等宽,等间距等布局方式
- MySql 远程导出数据
- 工厂模式(二)
- hibernate示例-保存对象
- Android之四大组件之一-Activity(三)
- windows下PHP+Mysql+Apache环境搭建及软件下载
- Swift使用SnapKit给控件添加约束时出现的三个错误
- Git问题总结
- aop 切入点表达式示例
- java 使用enum(枚举)
- java网络编程:HttpClient 4.x版本的使用
- PopupWindow的使用
- javascript中的闭包
- JAX-RS及标注
- VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT方式)