当前位置: 首页 > news >正文

Swift开发:NSLayoutConstraint纯代码实现自动布局-初级篇

要求 宽高200的view,通过代码,使得view在距离父控件的右下角20边距处

 

/* 约束的设置,控件内部约束由自己添加,比如宽高,如果是与其他的

           控件约束那么有父控件添加

        

        *创建约束 NSLayoutConstraint  参数 说明:

        * item 自己

        * attribute

        * relatedBy 大于等于 小于等于 等于

        * toItem 另外一个控件

        * attribute 另一个控件的熟悉

        * multiplier 乘以多少

        * constant : 加上多少

        * NSLayoutConstraint : 某个控件的属性值 等于 另外一个控件的属性值 

                       乘以多少 加上多少

        

        * 添加约束 addConstraint

        */



swift 代码:


       let blueView =UIView();

        blueView.backgroundColor =UIColor.blueColor()

        self.view.addSubview(blueView)//系统默认会给autoresizing 约束

// 关闭autoresizing 不关闭否则程序崩溃

        blueView.translatesAutoresizingMaskIntoConstraints =false



       //宽度约束

       let width:NSLayoutConstraint =NSLayoutConstraint(item: blueView, attribute: NSLayoutAttribute.Width, relatedBy:NSLayoutRelation.Equal, toItem:nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier:0.0, constant:200)

        

        blueView.addConstraint(width)//自己添加约束

        

       //高度约束

       let height:NSLayoutConstraint =NSLayoutConstraint(item: blueView, attribute: NSLayoutAttribute.Height, relatedBy:NSLayoutRelation.Equal, toItem:nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier:0.0, constant:200)

        

        blueView.addConstraint(height)//自己添加约束


       //右边约束

       let right:NSLayoutConstraint =NSLayoutConstraint(item: blueView, attribute: NSLayoutAttribute.Right, relatedBy:NSLayoutRelation.Equal, toItem:self.view, attribute:NSLayoutAttribute.Right, multiplier:1.0, constant: -20)

        

        blueView.superview!.addConstraint(right)//父控件添加约束


       //下边约束

       let bottom:NSLayoutConstraint =NSLayoutConstraint(item: blueView, attribute: NSLayoutAttribute.Bottom, relatedBy:NSLayoutRelation.Equal, toItem:self.view, attribute:NSLayoutAttribute.Bottom, multiplier:1.0, constant: -20)

        

        blueView.superview!.addConstraint(bottom)//父控件添加约束


效果图:


相关文章:

  • react中的 Modal.confirm
  • 数据挖掘之决策树ID3算法(C#实现)
  • 【一小时入门】webpack 入门指南
  • Vue中 beforeRouteLeave离开路由之前要执行的操作
  • AF3.1.0简单二次封装
  • Vue 项目中 根目录中router路由拦截 beforeEach 常用的写法
  • 不同按钮模板自定义
  • react项目中没有路由守卫,需要拦截的话,只能在路径上拦截,可以自己去封装 Route
  • 跟锦数学160823-190322, 共 942 题
  • JavaScript新鲜事·第5期
  • vue 项目实战 递归
  • react 项目 tab列表 把返回的一个字段数组,全部 展示在一个字段里
  • Python语言学习 (六)1.2
  • js语法中 ?. 和 ?? 的含义以及用法说明
  • 工作中MySql常用操作
  • C# 免费离线人脸识别 2.0 Demo
  • CentOS 7 修改主机名
  • eclipse(luna)创建web工程
  • ES6--对象的扩展
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Java 多线程编程之:notify 和 wait 用法
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Java超时控制的实现
  • Node项目之评分系统(二)- 数据库设计
  • 当SetTimeout遇到了字符串
  • 关于字符编码你应该知道的事情
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • ------- 计算机网络基础
  • 计算机在识别图像时“看到”了什么?
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 普通函数和构造函数的区别
  • 区块链分支循环
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 微信开放平台全网发布【失败】的几点排查方法
  • 无服务器化是企业 IT 架构的未来吗?
  • 用Python写一份独特的元宵节祝福
  • 回归生活:清理微信公众号
  • 通过调用文摘列表API获取文摘
  • #1014 : Trie树
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #pragma multi_compile #pragma shader_feature
  • (¥1011)-(一千零一拾一元整)输出
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (十)c52学习之旅-定时器实验
  • (一)WLAN定义和基本架构转
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .Net(C#)自定义WinForm控件之小结篇