Swift iOS:SnapKit

栏目: Swift · 发布时间: 8年前

内容简介:Swift iOS:SnapKit

iOS默认提供的布局技术强大而愚蠢。幸好有一个封装的包SnapKit,可以让布局变得容易阅读和修改。

假设要在一个UIViewController上布局两个label,要求是:

  1. 第一个label的xy距离父视图为5,100
  2. 第二个label 的x距离第一个label为10,高度一样
  3. 第三个label的y距离第一个label底边为10,x一样

那么可以这样做:

import SnapKit
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        self.window = UIWindow(frame: UIScreen.main.bounds)
        let page = Page1()
        self.window!.rootViewController = page
        self.window?.makeKeyAndVisible()
        return true
    }
}
class Page1: UIViewController {
    var count = 0
    var label1 : UILabel!
    var label2 : UILabel!
    var label3 : UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .white
        label1   = UILabel()
        label1.backgroundColor = .red
        view.addSubview(label1)

        label2   = UILabel()
        label2.backgroundColor = .red
        view.addSubview(label2)

        label3   = UILabel()
        label3.backgroundColor = .red
        view.addSubview(label3)

        label1.text = "1111"
        label2.text = "2222"
        label3.text = "3333"
        setup()
    }
    func setup(){
        label1.snp.makeConstraints{
            $0.left.equalTo(view).offset(5);
            $0.top.equalTo(view).offset(100);
        }
        label2.snp.makeConstraints{
            $0.left.equalTo(label1.snp.right).offset(10);
            $0.top.equalTo(label1)
        }
        label3.snp.makeConstraints{
            $0.left.equalTo(label1)
            $0.top.equalTo(label1.snp.bottom).offset(5)
        }
    }
    // old stupid approach
    func setup1(){
        label1.snp.makeConstraints{ (make) -> Void in
            make.left.equalTo(view).offset(5);
            make.top.equalTo(view).offset(100);
        }
        label2.snp.makeConstraints{ (make) -> Void in
            make.left.equalTo(label1.snp.right).offset(10);
            make.top.equalTo(label1)
        }
        label3.snp.makeConstraints{ (make) -> Void in
            make.left.equalTo(label1)
            make.top.equalTo(label1.snp.bottom).offset(5)
        }
    }
}

函数setup1的默认的布局代码,setup函数的代码则利用了闭包的特性,可以不必编写参数,直接用$引用参数,这样做会让代码更加简练,是一种实用的技能。


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

查看所有标签

猜你喜欢:

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

图论导引

图论导引

韦斯特 / 机械工业出版社 / 2006-2 / 65.00元

图论起源于著名的哥尼斯堡七桥问题,在计算科学、社会科学和自然科学等各个领域都有广泛应用。本书是本科生或研究生一学期或两学期的图论课程教材。内容全面,证明与应用实例并举,不仅包括对证明技巧的讨论、1200多道习题、400多幅插图以及许多例题,而且对所有定理都给出了详细完整的证明。可以作为高等院校数学系本科生和研究生、计算机专业和其他专业研究生的图论课程教材,也可以作为有关教师和工程技术人员的参考书。......一起来看看 《图论导引》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试