NSLayoutConstraint 使用详解 VFL使用介绍

注意  

使用前必须先取消所有的你想设置View 的 Autoresizing 属性 因为 Autoresizing  Layout不能共存  系统默认是 Autoresizing

 for v in subviews {
            v.translatesAutoresizingMaskIntoConstraints=false
        }
  • 自动布局核心公式
view1.attr1 = view2.attr2 * multiplier + constant
  • 自动布局构造函数
NSLayoutConstraint(item: 视图, 
    attribute: 约束属性, 
    relatedBy: 约束关系, 
    toItem: 参照视图, 
    attribute: 参照属性, 
    multiplier: 乘积, 
    constant: 约束数值)
  • 如果指定  约束

    • 参照视图设置为 nil
    • 参照属性选择 .NotAnAttribute
  • 自动布局类函数

NSLayoutConstraint.constraintsWithVisualFormat(VLF公式, 
    options: [], 
    metrics: 约束数值字典 [String: 数值], 
    views: 视图字典 [String: 子视图])
  • VFL 可视化格式语言

    • H 水平方向
    • V 垂直方向
    • | 边界
    • [] 包含控件的名称字符串,对应关系在 views 字典中定义
    • () 定义控件的宽/高,可以在 metrics 中指定
  // icon布局  上下左右居中
        addConstraint(NSLayoutConstraint(item: iconView, attribute: .centerX,
            relatedBy: .equal,
            toItem: self,
            attribute: .centerX,
            multiplier: 1.0,
            constant: 0))
        addConstraint(NSLayoutConstraint(item: iconView,    attribute: .centerY,
             relatedBy: .equal,
             toItem: self,
             attribute: .centerY,
             multiplier: 1.0,
             constant: -50))

 
   maskiconView 和屏幕等宽  和屏幕顶部对齐 距离  loginBtn顶部 -35 距离
  let viewDic : [String : Any] = ["maskiconView":maskiconView,"loginBtn":loginBtn]
        let metricDic = ["spacing":-35]
        
        addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-0-[maskiconView]-0-|",
              options: [],
              metrics: nil,
              views: viewDic))
        
        addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-0-[maskiconView]-(spacing)-[loginBtn]",
              options: [],
              metrics: metricDic,
              views: viewDic))
原文地址:https://www.cnblogs.com/ZhangShengjie/p/6808609.html