注意

使用前必须先取消所有的你想设置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

NSLayoutConstraint 使用详解 VFL使用介绍相关推荐

  1. 备份数据库的expdp语句_Oracle数据库备份恢复Data Pump Expdp/Impdp参数详解与案例介绍...

    oracle数据库备份恢复Data Pump Expdp/Impdp参数详解与案例介绍 目 录 1 Oracle数据泵的介绍 3 2 Oracle expdp/impdp参数使用介绍 3 2.1 Or ...

  2. c++ memset 语言_C/C++ 中memset() 函数详解及其作用介绍

    memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的: 包含在头文件中,可以用它对一片内存空间逐字节进行初始化: 原型为 : void *memset(void *s, int v, si ...

  3. HDMI ARC功能详解及应用介绍

    HDMI ARC功能详解及应用介绍 HDMI ARC,专注于音频传输的方案 ARC的全称为Audio Return Channel,顾名思义也就是音频回传通道.ARC出现的目的,是使整个数字化家电在线 ...

  4. Java网络编程 Socket、ServerSocket 详解,方法介绍及完整代码示例

    Java网络编程 Socket.ServerSocket 详解,方法介绍及完整代码示例 概念 什么是网络编程? 网络编程是指编写运行在多个设备(计算机)的程序,这些设备通过网络连接起来.当这些通过网络 ...

  5. python中装饰器的作用_Python装饰器详解,详细介绍它的应用场景

    装饰器的应用场景附加功能 数据的清理或添加:函数参数类型验证 @require_ints 类似请求前拦截数据格式转换 将函数返回字典改为 JSON/YAML 类似响应后篡改为函数提供额外的数据 moc ...

  6. Python装饰器详解,详细介绍它的应用场景

    装饰器的应用场景 附加功能 数据的清理或添加: 函数参数类型验证 @require_ints 类似请求前拦截 数据格式转换 将函数返回字典改为 JSON/YAML 类似响应后篡改 为函数提供额外的数据 ...

  7. Bert代码详解及模型介绍

    前言 写在前边:很多东西我也仅仅是一知半解,仅仅记录学习过程,个人观点,还需要看大量的代码.必须要耐住性子看代码,别无他法,看的多了自然就会了. 因为个人不用tensorflow,so这是bert的p ...

  8. 天龙网游帮会玩法详解 帮会系统详细介绍

    天龙八部3D帮会系统详细介绍,天龙八部3D帮派不但可以凝聚玩家,帮会还可以让玩家团结在一起打各种副本和活动,多做帮贡还可以购买稀有物品,下面就让小编和大家分享一下天龙八部3D帮会的玩法吧. 帮会界面: ...

  9. 彩虹表原理详解及工具介绍

    PS:这玩意偶前几天用了一下,确实强悍无比,在这个表面前,md5等公开的加密算法不堪一击啊.记得我之前的公司开发的游戏账号都用修改过的特有MD5加密算法,建议开发人员都这样搞,这样安全性就大大提高.如 ...

最新文章

  1. cocos2d-x的win32编译环境
  2. c#_static静态
  3. pytorch系列 ---5以 linear_regression为例讲解神经网络实现基本步骤以及解读nn.Linear函数
  4. http响应状态码列表
  5. ip integrator_使用Oracle Data Integrator(和Kafka / MapR流)完善Lambda体系结构
  6. 2021年国货彩妆品牌推广营销趋势
  7. linux 文件编码格式转换-转
  8. 图像卷积详细解释 常用卷积核解释说明
  9. Linux i2c-tools使用及调试
  10. macbook 终端命令怎么使用_Mac终端怎么打开?带你全面了解在macOS中使用终端命令行...
  11. 【ANSYS SCDM】,软件介绍及基本操作
  12. PPT怎么母版怎么修改及应用
  13. 码农的奋斗之路 富爸爸穷爸爸系列--提高你的财商 读后感
  14. 【动态规划 LIS】JZOJ_6310 glo
  15. 3手机版怎么换行_敬业签手机版便签软件怎么绑定QQ或微信互联登录?
  16. Python数据分析-北京房价分析
  17. 【visual studio】visual studio 2022 无法 复制黏贴
  18. 老电脑深度linux,国产操作系统DEEPIN超越微软WINDOWS成为老电脑福音,进步神速
  19. KRPano动态热点专用素材图50多个,加动态热点使用方法
  20. NVIDIA最全马甲对照表

热门文章

  1. flex 返回数据到 html5,Flex与javascript通信
  2. mysql sql 一部分记录_MySQL性能优化实践(很全面,值得收藏)
  3. 使用live555制作rtsp客户端,捕获h264等解码
  4. 整理一个双向链表list.h
  5. LINUX的DNS怎么设置?linux下如何修改DNS地址
  6. Flink】FLink 通讯组件 RPC
  7. 【Elasticsearch】 Elasticsearch对外提供分词服务实践
  8. 【ElasticSearch】Es 源码之 Discovery DiscoveryModule 源码解读
  9. 【MySQL】MySQL 使用where条件的三种方式
  10. 60-300-024-使用-延迟数据-Flink中延时调用设计与实现