Swift 控件约束之 SnapKit

一、附上 SnapKit 在 github 的地址:https://github.com/SnapKit/SnapKit

官方指导添加约束:https://github.com/SnapKit/SnapKit#usage

SnapKit 3.0 Migration Guide: https://github.com/SnapKit/SnapKit/blob/master/Documentation/SnapKit%203.0%20Migration%20Guide.md

二、具体使用

Swift 3.0 使用懒加载

 //头像
    lazy var headerImageView: UIImageView = {
        let imgView: UIImageView = UIImageView()
        imgView.backgroundColor = UIColor.red
        return imgView
    }()

    //title
    lazy var titleLabel: UILabel = {
        let time: UILabel = UILabel()
        time.font = UIFont.boldSystemFont(ofSize: 15)
        time.text = "工作通知:iOS"
        return time
    }()

    //时间
    lazy var timeLabel: UILabel = {
        let time: UILabel = UILabel()

        time.font = UIFont.systemFont(ofSize: 10)
        time.textColor = UIColor.lightGray
        time.text = "昨天"
        time.textAlignment = .right
        time.baselineAdjustment = .none
        return time
    }()

    //描述
    lazy var descriptionLabel: UILabel = {
        let time: UILabel = UILabel()

        time.font = UIFont.systemFont(ofSize: 13)
        time.textColor = UIColor.lightGray
        time.text = "[考勤打卡] 还有六分钟就要上班了,..."
        time.textAlignment = .left
        time.baselineAdjustment = .none
        return time
    }()

    //未处理时间1
    lazy var noHandleLabel: UILabel = {
        let time: UILabel = UILabel()
        time.isHidden = true
        time.backgroundColor = .red
        time.font = UIFont.systemFont(ofSize: 10)
        time.textColor = UIColor.white
        time.text = "1"
        time.textAlignment = .center
        time.baselineAdjustment = .none
        return time
    }()

使用 Snapkit 给控件添加约束

 func addSubViews() -> Void {

        self.addSubview(self.headerImageView)
        self.addSubview(self.titleLabel)
        self.addSubview(self.timeLabel)
        self.addSubview(self.descriptionLabel)
        self.addSubview(self.noHandleLabel)

        //头像

        self.headerImageView.snp.makeConstraints { (make) in
            make.left.equalToSuperview().offset(10)
            make.top.equalToSuperview().offset(10)
            make.bottom.equalToSuperview().offset(-10)
            make.width.equalTo(self.headerImageView.snp.height)
        }

        //title

        self.titleLabel.snp.makeConstraints { (make) in
            make.top.equalTo(self.headerImageView)
            make.left.equalTo(self.headerImageView.snp.right).offset(10)

        }

        //时间

        self.timeLabel.snp.makeConstraints { (make) in
            //make.top.equalTo(self.titleLabel.snp.top)
            make.bottom.equalTo(self.titleLabel.snp.bottom)
            make.right.equalToSuperview().offset(-10)
        }

        //描述

        self.descriptionLabel.snp.makeConstraints { (make) in
            make.left.equalTo(self.titleLabel.snp.left).offset(0)
            make.bottom.equalTo(self.headerImageView.snp.bottom).offset(0)
            make.right.equalTo(self.noHandleLabel).offset(-20)
        }

        //未处理事件
        self.noHandleLabel.snp.makeConstraints { (make) in
            make.right.equalTo(self.timeLabel.snp.right).offset(0)
            make.bottom.equalTo(self.descriptionLabel.snp.bottom).offset(0)
            make.top.equalTo(self.descriptionLabel.snp.top).offset(0)
            make.width.equalTo(self.noHandleLabel.snp.height).offset(0)
        }
    }

效果图:

时间: 2024-10-07 20:03:41

Swift 控件约束之 SnapKit的相关文章

Android动态添加控件约束位置

用LayoutParams: RelativeLayout insertLayout = (RelativeLayout)view1.findViewById(R.id.screen);//screen是一个RelativeLayout 布局的id ImageView imgApple2 = new ImageView(MainActivity.this); imgApple2.setBackgroundColor(Color.parseColor("#ffb6b4")); Relat

谷歌约束控件(ConstraintLayout)扁平化布局入门

序 在Google IO大会中不仅仅带来了Android Studio 2.2预览版,同时带给我们一个依赖约束的库. 简单来说,她是相对布局的升级版本,但是区别与相对布局更加强调约束.何为约束,即控件之间的关系. 她能让你的布局更加扁平化,一般来说一个界面一层就够了:同时借助于AS我们能极其简单的完成界面布局. 准备 1.准备好Android Studio 2.2预览版,在这里给大家准备好了下载链接: https://dl.google.com/dl/android/studio/ide-zip

Swift学习之熟悉控件

最近是比较清闲一些的,对于一个开发者来说,这也是一个很好的充电机会.以前做项目都是使用Objective-C去开发,但我们都知道,Swift语言从2014年的出现到现在,一步一步变的完善,渐渐变的受欢迎起来.apple似乎也把重心放在了Swift上,所以了解.学习Swift变的有必要了. 所以在这个空闲的时候,学习一下Swift控件,当然,如果说我在博客中一步步写出所有的控件的使用方法,就显得太费时间了.如果有一样想学switf,练习使用Swift控件的.可以直接下载我在GitHub上放的Dem

UILabel的抗压缩、抗拉伸、以及控件的约束简述

今天来说一说UILabel的约束设置问题 首先主要介绍:Priority(控件约束的优先级).Content Hugging Priority(控件抗拉伸优先级).Content Compression Resistance Priority(控件抗压缩优先级),好的,开始一个个介绍. 1.Priority控件中每一个约束都有优先级,在xib和storyboard中很容易看到,如图: 在这里可以设置约束的优先级,优先级的取值范围是1~1000,控件的约束会有限满足优先级高的,控件的约束默认都是1

swift基础控件的创建

/* let apples = 3 let orange = 5 let L = 1.1 let appleSummary = "I have \(apples) apples" let fruitSummary = "I have \(apples + orange) pieces of fruit." let isay = "I Love \(L) you " print(isay) let expliciFloat: Float = 4 /

Swift基础教程(swift代码创建第一个控件之UILabel)

首先 给需要创建的label 设置frame let textLabel = UILabel(frame:CGRectMake(self.view.frame.size.width/8,20,self.view.frame.size.width*3/4,100)) 给label 设值 textLabel.text = "现在我们来开始学习如何创建我们的第一个swift控件吧 -UILabel" 设置是否默认换行 textLabel.numberOfLines = 0 设置label的背

Swift基础教程(swift代码创建第一个控件之UILabel

创建视图的控件跟之前还是差不多,在viewdidload里面近些视图的创建. 首先 给需要创建的label 设置frame let textLabel = UILabel(frame:CGRectMake(self.view.frame.size.width/8,20,self.view.frame.size.width*3/4,100)) 给label 设值 textLabel.text = "现在我们来开始学习如何创建我们的第一个swift控件吧 -UILabel" 设置是否默认换

ASP.NET控件属性大全

ASP.NET控件属性大全 DataGridView 控件DataGridView 控件提供用来显示数据的可自定义表.使用 DataGridView 类,可以自定义单元格.行.列和边框. 注意DataGridView 控件提供 DataGrid 控件所不具备的许多基本和高级功能.有关更多信息,请参见 Windows 窗体 DataGridView 控件和 DataGrid 控件之间的区别 常用属性:DefaultCellStyle.ColumnHeadersDefaultCellStyle.Ce

iOS_book 02 - 基本交互(约束、视图控制器、基本控件:按钮、文本框、分段控件、开关、标签、图像控件)

实现基本交互 MVC模式 Cocoa Touch 设计者们采用MVC(Model-View-Controller, 模型 - 视图 - 控制器)模式作为指导原则. MVC 模式把代码功能划分为3个不同的类别. 模型: 保存应用程序数据的类. 视图:包括窗口.控件以及其他一些用户可以看到并能与之交互的元素. 控制器:把模型和视图绑定在一起的代码,包括处理用户输入的应用程序逻辑. MVC的目标最大限度地分离这三类代码.MVC可以帮助确保代码的最大可重用性. 控制器组件通常有应用程序的具体类组成.控制