博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SnapKit入门教程
阅读量:6176 次
发布时间:2019-06-21

本文共 3791 字,大约阅读时间需要 12 分钟。

阅读本文大概需要20min,读完你可以了解SnapKit的一些基础用法和一些非常棒的特性!Enjoy it!

介绍

它的Github官方介绍语如下: SnapKit is a DSL to make Auto Layout easy on both iOS and OS X. SnapKit 提供一种更加简易的方式来应用自动布局

安装

SnapKit支持三种安装方式:Cocodpods、Carthage、手动拖入

  • Cocoapods

    1、在Podfile文件中添加pod 'SnapKit', '~> 4.0.0'

    2、执行pod install

  • Carthage

    1、 在Cartfile文件添加github "SnapKit/SnapKit" ~> 4.0.0

    2、执行carthage update

  • 手动拖入项目

基础使用

OK,现在项目已经集成了SnapKit,下面来看一下基础的用法!

  • 首先在使用的文件中导入SnapKitimport SnapKit
  • 注意:在使用SnapKit之前一定要把相关子控件先添加到父View;在使用SnapKit之前一定要把相关子控件先添加到父View;在使用SnapKit之前一定要把相关子控件先添加到父View;

相关场景

  • 子控件在父view居中,示例代码如下:
let button = UIButton(type: .custom)    button.backgroundColor = UIColor.blue    button.addTarget(self, action: #selector(buttonClick), for: .touchUpInside)    view.addSubview(button)    button.snp.makeConstraints { (make) in        make.size.equalTo(CGSize(width: 100, height: 100))        make.center.equalTo(view)    }复制代码

上面讲的是一个简单的一个view中有一个子控件的情况,下面来看一下一个view中的两个子控件如何布置约束。

  • subView1头部距离subView2底部30
let button = UIButton(type: .custom)    button.backgroundColor = UIColor.blue    button.addTarget(self, action: #selector(buttonClick), for: .touchUpInside)    bgView.addSubview(button)    button.snp.makeConstraints { (make) in        make.size.equalTo(CGSize(width: 100, height: 100))        make.center.equalTo(bgView)    }            let bottomLabel = UILabel(frame: .zero)    bottomLabel.text = "bottomLabel"    bottomLabel.backgroundColor = UIColor.orange    bgView.addSubview(bottomLabel)    bottomLabel.snp.makeConstraints { (make) in        make.top.equalTo(button.snp.bottom).offset(30) //注意此处button后面要加snp,否则是不起作用的        make.size.equalTo(CGSize(width: 200, height: 50))        make.centerX.equalTo(button)    }复制代码

说明: 使用make.center.equalTo(bgView)make.center.equalTo(bgView.snp.center)是等效的,也就是说当你省略的时候,SnapKit默认是你前面写的layout,但是当你两个不一致时,比如你是下面的view距离上面的view的bottom偏移量是30的时候,就不能省略着写了。注意:如果你的项目中你对view添加了bottom的extension,你可能会把make.top.equalTo(button.snp.bottom).offset(30)写成make.top.equalTo(button.bottom).offset(30),这也是不对的,必须添加前面的snp

到这里,相信大家对SnapKit的基础用法有了一定的了解。其实如果大家使用过的话对SnapKit的用法一定不会陌生,因为这两个库是一个团队出品的(开源万岁)!

下面来了解一下一些非常棒的特性。

非常棒的特性

  • 设置一个子view的四边内边距据父view都为20,下面为代码示例:
button.snp.makeConstraints { (make) in    make.edges.equalTo(bgView).inset(UIEdgeInsetsMake(20, 20, 20, 20))    }//上面代码和注释代码等同    //        box.snp.makeConstraints { (make) -> Void in//            make.top.equalTo(superview).offset(20)//            make.left.equalTo(superview).offset(20)//            make.bottom.equalTo(superview).offset(-20)//            make.right.equalTo(superview).offset(-20)//        }复制代码
  • SnapKit不仅仅可以设置等于,它也可以设置小于等于、大于等于和设定一个范围; 并且它还支持给left/right/centerY等属性设置上面的用法。 下面是代码示例:
let fzhLabel = UILabel()    fzhLabel.text = "Dota2"    fzhLabel.textColor = UIColor.black    fzhLabel.backgroundColor = UIColor.blue    fzhLabel.font = UIFont.systemFont(ofSize: 18)    bgView.addSubview(fzhLabel)    fzhLabel.snp.makeConstraints { (make) in        make.left.top.equalTo(bgView).offset(20)        make.height.equalTo(20)        //设置label的最大宽度为200        make.width.lessThanOrEqualTo(200)}//设置label的最小宽度为200make.width.greaterThanOrEqualTo(200)//设置label最小宽度为50,最大宽度为100make.width.greaterThanOrEqualTo(50)make.width.lessThanOrEqualTo(100)//设置view的left小于等于该view的父view的左 + 10(view.left <= view.superview.left + 10)make.left.lessThanOrEqualTo(10)复制代码
  • SnapKit也支持设置优先级,它可以放在约束链的最后,它既可以设置具体的值也可以使用枚举(.low, .medium, .high, .require)下面是代码示例:
make.left.equalTo(label.snp.left).priority(500)make.left.equalTo(label.snp.left).priority(.high)复制代码

注意事项

  • 该库支持iOS的最低版本是iOS8,所以iOS8以下是无法使用的
  • 在使用SnapKit之前一定要把相关子控件先添加到父View
  • SnapKit不支持IB
  • SnapKit支持make.xxx.xxx.equalTo(bgView).offset(20)的用法,如:make.left.top.equalTo(bgView).offset(20)(该控件的左和上距bgview左和上偏移量为20)

结语

到这里本文就结束了,本文只是大概的讲了一下SnapKit的基本用法,其他的大家可以查看它的文档再详细了解。如果大家在使用的时候遇到什么问题可以写在下面的评论中,大家一起研究!

官方文档

转载地址:http://xnzda.baihongyu.com/

你可能感兴趣的文章
scikit-learn基础介绍
查看>>
static{}语句块详解
查看>>
elasticsearch 5.x常见问题整理
查看>>
nginx-server-backup策略说明
查看>>
计算机硬件、驱动程序和操作系统
查看>>
mysql 下载及安装方法
查看>>
字符串的比较查找与替换
查看>>
XML 文件解析--含Unicode字符的XML文件
查看>>
单利模式
查看>>
Two Sum
查看>>
Spring MVC绑定 List 对象参数
查看>>
spark 添加第三方依赖
查看>>
配置虚拟目录
查看>>
RHCE 学习笔记(31) - 防火墙 (下)
查看>>
linux 命令
查看>>
【Linux学习记录】Linux主机规划与安装
查看>>
springboot 拦截器
查看>>
Call requires API level 4 (current min is 3):类似异常解决
查看>>
zookeeper学习之zkclient节点增删改查<九>
查看>>
HDP上安装impala
查看>>