SnapKit入门教程

栏目: IOS · 发布时间: 6年前

内容简介:阅读本文大概需要20min,读完你可以了解SnapKit的一些基础用法和一些非常棒的特性!Enjoy it!它的Github官方介绍语如下:SnapKit支持三种安装方式:Cocodpods、Carthage、手动拖入

阅读本文大概需要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,下面来看一下基础的用法!

import SnapKit

相关场景

  • 子控件在父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的基础用法有了一定的了解。其实如果大家使用过 Masonry 的话对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的最小宽度为200
make.width.greaterThanOrEqualTo(200)
//设置label最小宽度为50,最大宽度为100
make.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的基本用法,其他的大家可以查看它的文档再详细了解。如果大家在使用的时候遇到什么问题可以写在下面的评论中,大家一起研究!

官方文档


以上所述就是小编给大家介绍的《SnapKit入门教程》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Numerical Recipes 3rd Edition

Numerical Recipes 3rd Edition

William H. Press、Saul A. Teukolsky、William T. Vetterling、Brian P. Flannery / Cambridge University Press / 2007-9-6 / GBP 64.99

Do you want easy access to the latest methods in scientific computing? This greatly expanded third edition of Numerical Recipes has it, with wider coverage than ever before, many new, expanded and upd......一起来看看 《Numerical Recipes 3rd Edition》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具