• 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))
  • 相关阅读:
    等保测评(一)
    一个基于RNN的实体抽取工具
    如何画UML类图
    mysql存储过程整理
    记一次mysql事务未提交导致锁未释放的问题
    开启·元宇宙·区块链金融
    Nacos启动报错:[db-load-error]load jdbc.properties error
    使用Bazel编译TypeScript
    Win10上Docker无法正常启动 出现install WSL2 kernel update的情况
    VSCode调试PHP环境配置 phpstudy vscode xdebug调试
  • 原文地址:https://www.cnblogs.com/ZhangShengjie/p/6808609.html
Copyright © 2020-2023  润新知