SnapKit的使用

SnapKit是Masonry的Swift版,项目发布至今大约1年的时间,已经在github上有两千多个star

使用:

注意: UI控件的创建不在此赘述,但是尤其要注意的是,一定要把要进行自动布局的控件先添加到父视图上!一定要先添加!

常用控件:

1.首先先来看一个控件简单使用:

对于一般控件来说:有 上 下 左 右 宽 高 六个属性 必须设置四个属性约束,保证系统能通过其确定位置,否则可能不显示,也可以多设置,通过优先级来判断先支持哪个约束

myTableView.snp_makeConstraints { (make) -> Void in

make.top.equalTo(self.view).offset(10)

make.left.equalTo(self.view).offset(20)

make.bottom.equalTo(self.view).offset(-100)

make.right.equalTo(self.view).offset(-200)

}

一句句分析

self.view 表示myTableView这个控件所在的父视图,当然也可以是其他兄弟视图这个以后再说

make.top.equalTo(self.view).offset(10) 这句代码表示 顶部坐标偏移10个像素点

这句话也可以写成 make.top.equalTo(10)

make.right.equalTo(self.view).offset(-200) 代码意思相,但注意bottom/right 这两个属性和top/left属性不同,后面的偏移量写成负值 才可以偏移200个像素的距离,如果是正值,那么是向右偏移的,就会跑出屏幕

上述四句:可以用

make.edges.equalTo(self.view).inset(UIEdgeInsetsMake(10, 20, 100, 200))

代替, 这个时候 四个值都是正的

另外:还有其他属性

make.size  //设置大小

make.center //设置中心点

make.topMargin //设置边距

make.baseline //设置基线位置

make.leading//相当于left

make.trailing//相当于right

make.width

make.height

2.接下来来看相对使用

redView = UIView()

redView.backgroundColor = UIColor.redColor()

myScrollView.addSubview(redView)

redView.snp_makeConstraints { (make) -> Void in

make.size.equalTo(CGSizeMake(UIScreen.mainScreen().bounds.width, 200))

make.left.equalTo(0)

make.top.equalTo

第二个控件可以这么来

yellowView = UIView()

yellowView.backgroundColor = UIColor.yellowColor()

myScrollView.addSubview(yellowView)

yellowView.snp_makeConstraints { (make) -> Void in

make.size.equalTo(CGSizeMake(UIScreen.mainScreen().bounds.width, 200))

make.left.equalTo(redView.snp_right)

make.top.equalTo(0)

}

其中 最主要的一句就是make.left.equalTo(redView.snp_right)

这一句的含义即为 设置黄色视图的左坐标,这个坐标在红色视图的右边

同样,不仅有snp_right,还有snp_bottom,snp_centerX 等属性

注意:设置黄色视图的时候,必须保证红色视图也要添加到父视图上!否则系统找不到红色视图会出错

3.大于/小于

// width >= 200 && width <= 400

make.width.greaterThanOrEqualTo(200)

make.width.lessThanOrEqualTo(400)

4.优先级:

make.top.equalTo(0).priorityLow()

提供:

priorityRequired()

priorityHigh()

priorityMedium()

priorityLow()

四个优先级

另外可以通过priority来设定数字来设定优先级 范围在0 - 1000之间  1000表示必须支持

5.改变:

可以在redView.snp_updateConstraints 或者snp_remakeConstraints 进行修改约束

可以通过snp_removeConstraints 来删除约束

6.其他 :

AutoLayout 中修改bounds 或者transform进行平移缩放是有效的 但是若我们对redView进行修改,黄色视图的位置或者大小不会改变

特殊控件 UILabel

label.snp_makeConstraints { (make) -> Void in

make.top.equalTo(self.contentView).offset(5)

make.right.equalTo(self.contentView).offset(-5)

}

UILabel 可以只设置其坐标点,不设置其高度和宽度

其宽度为文字宽度,高度为文字自适应高度

但是 若不设置宽度||(水平起始&&终止坐标) 即使设置了numberOfLines = 0 也将不能换行

你可能感兴趣的:(SnapKit的使用)