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. JavascriptS中的各结构的嵌套和函数

    各位朋友大家好,上周更新给大家分享了JavaScript的入门知识及各种常用结构的用法,那么,本次更新博主就跟大家更深入的聊一聊JS各结构的嵌套用法,及JS中及其常用的一种结构--函数.以下为函数和循 ...

  2. Java 9 尝鲜之JShell交互式编程环境

    JShell--Java 9 的交互式编程环境 本文要求读者有基本的 Java 知识. Tips Java 9 的代码由于提供了新特性,所以有些代码并不支持向后兼容.也就是说,用 Java 9 写的代 ...

  3. 高性能MySQL--索引学习笔记(原创)

    看过一些人写的学习笔记,完全按书一字不漏照抄,内容很多,真不能叫笔记.遂自己整理了一份,取其精要. 更多笔记请访问@个人简书 [toc] 索引概述 索引即key 在存储引擎层实现,不同引擎工作方式不同 ...

  4. 自然梯度(Natural Gradient)

    自然梯度(Natural Gradient)

  5. Notepad++ 7.3.2 Download 64-bit x64 / 32-bit x86

    Notepad++ 7.3.2 Download 32-bit x86 Notepad++ Installer 32-bit x86: Take this one if you have no ide ...

  6. js中的IP格式正则匹配校验详解~

    IPV4的格式为x:y:z:w,其中{x,y,z,w}属于{0~255}的正整数: 下面是其校验的正则表达式: function isIP(ip) { var re =  /^(\d{1,2}|1\d ...

  7. js原型二

    function Box(name,age){ this.name = name; this.age = age; this.family = ['哥哥',‘姐姐’,‘妹妹’]: } Box.prot ...

  8. 使用Three.js的材质

    1.three.js提供哪些材质? MeshBasicMaterial(网格基础材质)/基础材质,,可以用它富裕几何体一种简单的亚瑟,或者显示几何体的线框 MeshDepthMaterial(网格深度 ...

  9. js 解析本地Excel文件!

    通常,一般读取Excel都是由后台来处理,不过如果需求要前台来处理,也是可以的.. 1.需要用到js-xlsx,下载地址:js-xlsx 2.demo: <!DOCTYPE html>&l ...

  10. Python13_day3

    http://www.cnblogs.com/wupeiqi/articles/4950799.html`` 学习流程 一.基本的学习方法 1,看视频,听懂老师的课程. 2,下课做笔记,将笔记的内容写 ...