SnapKit是Swift中自动布局的框架,相当于Objective-C中的Masonry

下面是tableView自定义cell,使用SnapKit布局的效果图:

详细代码如下:

TYCustomCell.swift

import UIKit
import SnapKit class TYCustomCell: UITableViewCell {
var imgView: UIImageView?
var titleLab:UILabel?
var despLab:UILabel? required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupUI()
} override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
} func setupUI() {
//初始化头像
imgView = UIImageView()
imgView?.image = UIImage.init(named: "img.jpg")
imgView?.layer.borderColor = UIColor.gray.cgColor
imgView?.layer.borderWidth = 1.0
self.addSubview(imgView!) //顶部的label 初始化
let label1 = UILabel()
label1.font = .systemFont(ofSize: 15)
label1.textColor = .red
self.addSubview(label1)
titleLab = label1 //底部的label 初始化
let label2 = UILabel()
label2.font = .systemFont(ofSize: 14)
label2.textColor = .black
label2.numberOfLines = 0
self.addSubview(label2)
despLab = label2; //设置布局 SnapKit --- >相当去Objective-C中的Masonry
imgView?.snp.makeConstraints({ (make) in
make.top.left.equalTo(10)
make.width.height.equalTo(40)
}) label1.snp.makeConstraints { (make) in
make.top.equalTo(10)
make.left.equalTo((imgView?.snp.right)!).offset(10)
make.right.equalTo(-10)
make.height.equalTo(21)
} label2.snp.makeConstraints { (make) in
make.top.equalTo(label1.snp.bottom).offset(10)
make.left.equalTo((imgView?.snp.right)!).offset(10)
make.right.equalTo(-10)
make.bottom.equalTo(-10)
} } }

ViewController.swift

import UIKit

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {

    var tableView:UITableView?;
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib. setupTableView()
} func setupTableView() {
tableView = UITableView(frame: view.bounds, style: .plain)
tableView?.delegate = self;
tableView?.dataSource = self;
tableView?.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
tableView?.register(TYCustomCell.self, forCellReuseIdentifier: "TYCustomCell")
view.addSubview(tableView!)
tableView?.estimatedRowHeight = 44.0
tableView?.rowHeight = UITableViewAutomaticDimension } func numberOfSections(in tableView: UITableView) -> Int {
return 1
} func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
} func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "TYCustomCell", for: indexPath) as! TYCustomCell
// cell.textLabel?.text = "xxxx\(indexPath.row)"
cell.titleLab?.text = "我是假数据"
if indexPath.row%2==0 {
cell.despLab?.text = "我是假数据我是假数据我是假数据"
}
else
{
if indexPath.row%3 == 0{
cell.despLab?.text = "我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据"
}
else{
cell.despLab?.text = "我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据我是假数据"
}
}
return cell
} func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
print("第\(indexPath.row)行被点击了")
} }

重点:swift中tableView如果创建自定义cell,swift中如何使用SnapKit框架进行控件布局

自动计算高度代码:

  tableView?.estimatedRowHeight = 44.0
tableView?.rowHeight = UITableViewAutomaticDimension

swift学习 - tableView自适应高度2(SnapKit Layout)的更多相关文章

  1. swift学习 - tableView自适应高度1(xib autoLayout)

    tableView自适应高度 效果图: 源码: class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSo ...

  2. 纯代码TableView自适应高度(很老的使用方法)

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    return  ...

  3. IOS Swift语言开发 tableView的重用以及自cell的自适应高度

    http://www.aichengxu.com/iOS/11143168.htm 一.准备数据 (这是一个元组,第一个元素为英雄的名字;第二个元素为英雄头像图片的名字,格式为.PNG,如果为其他的格 ...

  4. TableView cell自适应高度-----xib

    1.通过xib创建一个cell,将label进行上左下右,进行适配, self.automaticallyAdjustsScrollViewInsets = NO; self.edgesForExte ...

  5. [Swift通天遁地]二、表格表单-(12)设置表单文字对齐方式以及自适应高度的文本区域TextArea

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  6. 让tableView的高度等于contentSize的高度、动态调整tableView的高度、tableView的高度自适应布局

    文章概要: 1.简介下,tableView中的内容如何高度自适应的布局 2.如何做到让tableView的高度动态调整 还是看图作文吧- 首先,tableView的高度就是用户能够看见里面更大世界的那 ...

  7. Cell自适应高度及自定义cell混合使…

    第一部分:UItableViewCellAdaptionForHeight : cell的自适应高度 第二部分:CustomTableViewCell:自定义cell的混合使用(以简单通讯录为例) = ...

  8. iOS 【终极方案】精准获取webView内容高度,自适应高度

    前言:是这样的,刚写完上一篇文章还没缓过神来,上一篇文章我还提到了,想和大家聊聊原生+H5如何无缝连接的故事.结果我朋友就给我发了两篇他的作品.他的做法也都有独到之处.好的文章都是这样,让你每次看都能 ...

  9. 怎样让自定义Cell的图片和文本自适应高度

    Let's do it! 首先创建一个Model类 包括一个图片名称属性 还有文字内容属性 #import <Foundation/Foundation.h> @interface Mod ...

随机推荐

  1. 这辈子只能碰到一次! 记一次SSL无故被撤消!

    SSL证书刚更新一切都那么正常, 突然有一天网站不能访问了, Chrome浏览器提示有风险, 没有继续访问链接,没有,没有, 重要的事情说三遍, 于是乎赶紧加班查原因, 发展浏览器报的错误是证书撤消( ...

  2. 博客搬到CSDN了

    新博客地址: http://blog.csdn.net/enlangs

  3. java 基础知识一 初识java

    java  基础知识一初识java 1.java语言的特点 (1)简洁有效(2)可移植性(3)面向对象(4)解释型(5)适合分布式计算 2.java的源文件扩展名为.java 编译后的扩展名为.cla ...

  4. 这个demo是为解决IQKeyboardManager和Masonry同时使用时,导航栏上移和make.right失效的问题

    原文链接在我的个人博客主页 (一).引言: 在 IQKeyboardManager 和 Masonry 同时使用时,导航栏上移和make.right失效等问题多多. 其实我们完美的效果应该是这样的:* ...

  5. 自动生成数学题型三 (框架Struts2)题型如 a+b=c(a、b、c都为分数)

    1. 约分分数 1.1 保留质数 /** * 将数值放入到fraction数组中 * @param fen 简要放的 int类型数值 */ public void fenshu(int fen) { ...

  6. React+Redux学习笔记:React+Redux简易开发步骤

    前言 React+Redux 分为两部分: UI组件:即React组件,也叫用户自定义UI组件,用于渲染DOM 容器组件:即Redux逻辑,处理数据和业务逻辑,支持所有Redux API,参考之前的文 ...

  7. TaintDroid简介

    1.Information-Flow tracking,Realtime Privacy Monitoring.信息流动追踪,实时动态监控. 2.TaintDroid是一个全系统动态污点跟踪和分析系统 ...

  8. 【理论篇】Percona XtraBackup 恢复单表

    小明在某次操作中,误操作导致误删除了某个表,需要立即进行数据恢复. 如果是数据量较小的实例,并且有备份,即便是全备,做一次全量恢复,然后单表导出导入,虽然麻烦一点,却也花不了多少时间:如果是数据量大的 ...

  9. 《分布式Java应用之基础与实践》读书笔记一

    分布式Java应用的体系结构知识简单分为: 网络通信:包括协议和IO 消息方式的系统间通信:包括基于Java包.基于开源框架.性能角度 远程调用方式的系统间通信:包括基于Java包.基于开源框架.性能 ...

  10. python——模块

    一.导入模块 Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入.导入模块有一下几种方法: 1 import module 2 fr ...