【30-swift-projects-in-30-days】Swift 5 学习记录
在 01.CustomFont 项目中主要学习的是自动布局库SnapKit的安装和使用。
1.SnapKit安装
Podfile内容如下:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
target 'CustomFont' do
pod 'SnapKit'
end
在终端定位到Podfile所在目录,执行pod install即可。
若碰到SnapKit在swfit5环境下无法使用,可参考 Conversion to Swift 5 is availiable 后SnapKit报错 解决。
2.SnapKit的使用
注意:必须先将控件添加到视图中,再给控件添加约束。例如:
self.view.addSubview(label)
label.snp.makeConstraints { (make) in
make.top.equalTo(100)
make.centerX.equalTo(self.view)
}
属性说明:
.equalTo:等于
.lessThanOrEqualTo:小于等于
.greaterThanOrEqualTo:大于等于
.edges::边缘
.size:尺寸
.center:中心
.inset:内位移修正
.offset:外位移修正
.multipliedBy:倍率修正
基本使用:
let viewOne = UIView()
viewOne.snp.makeConstraints { (make) in
make.left.top.equalToSuperview()
make.width.height.equalTo(40)
}
//当前视图与 title中心相同 (centerX 和 centerY)
make.center.equalTo(title)
//当前视图宽高大于等于 title
make.size.greaterThanOrEqualTo(title)
//当前视图 的 上下左右(top,left,bottom,right) 等于 title
make.edges.equalTo(title)
//当前视图距离title视图上、左、下、右边距分别是20、20、20、30
make.edges.equalTo(title).inset(UIEdgeInsetsMake(20, 20, 20, 30))
//当前视图为title视图的一半
make.size.equalTo(title).multipliedBy(0.5)
//在父视图中水平垂直居中
make.center.equalTo(superview.snp.center)
//在父视图中水平垂直居中
make.center.equalTo(superview)
更新、移除、重设约束:
//保存约束的引用
var constraint:Constraint?
title.snp.makeConstraints { (make) -> Void in
self.constraint = make.width.height.equalTo(150).constraint
make.center.equalTo(self.view)
}
//移除约束
self.constraint?.deactivate()
//1.更新修改约束
self.constraint?.update(offset: 60)
//2.视图约束更新
override func updateViewConstraints() {
self.title.snp.updateConstraints{ (make) -> Void in
//视图宽度与屏幕等宽
make.width.equalTo(self.view)
}
super.updateViewConstraints()
}
//重做约束
title.snp.remakeConstraints { (make) -> Void in
make.width.height.equalTo(100)
}
学习源码来自 https://github.com/nimomeng/30-swift-projects-in-30-days ,Swift语言版本为 4.1 。
学习过程我会将代码语言版本改成Swift 5,代码地址:https://github.com/dong706/30-swift-projects-in-30-days/ 。
参考文章:iOS开发Snapkit的使用
使用SnapKit时 center 和snp.center 的区别