【30-swift-projects-in-30-days】swift 5 学习 01.CustomFont

【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 的区别

转载于:https://my.oschina.net/dong706/blog/3048532

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值