说的有点乱,先看个图把

其实这个constrant的目的就是控制两个方形的控件上方和下方的空白大小。

对于每一个方块来说,他们上方和下方的空白是相同的。这种“居中”的设计到处可见。一个控件想实现这种居中和简单,只需要建立一个参考的view,比如这里的h1或h2,再调整好参考view的高度,最后设置控件和参考view中部对齐即可。连续的2个控件都想实现的话,就麻烦一点,需要2个参考view,具体的设置方法请参考上图。注意,这里的m,n,height都是定值。所以对应的h1和h2可以解除唯一一组值,所以2个控件的中心y坐标是唯一的,也就是说这组constraint可以实现目标!

但是上面的方法并不好,这里写出来主要是给出一种判断能否用constraint确定位置的方法,这里是利用了方程组,解出具体值。

再看一个真正的好方法,见下图

这里2个控件的高度是固定的,一个是m,一个是n。之后添加了3个辅助view,这3个view都不设置具体的高度,而是利用constraint把这5个view串起来,并如图设置2个constraint,这样,就有以下方程

m+n+h1+h2+h3 = 总高度

h1 = h2 = 0.3*h3

这样可以解出h1,h2,h3,所以控件的位置就确定了,而且这2个控件的空白间隔可以根据我们的需要调整。

iOS 利用constraint实现2个控件上下的空白是相等的的更多相关文章

  1. iOS开发UI篇—手写控件,frame,center和bounds属性

    iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...

  2. iOS开发UI基础—手写控件,frame,center和bounds属性

    iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...

  3. Android中如何利用attrs和styles定义控件

    一直有个问题就是,Android中是如何通过布局文件,就能实现控件效果的不同呢?比如在布局文件中,我设置了一个TextView,给它设置了 textColor,它就能够改变这个TextView的文本的 ...

  4. [开源]在iOS上实现Android风格的控件Toast

    [开源]在iOS上实现Android风格的控件Toast iOS的风格和Apple其他产品一样,简单而粗暴.没有给人其他选择的余地,让你又爱又恨.同样的,Apple对待iOS平台的开发人员和对待大众消 ...

  5. iOS开发基础篇-手写控件

    一.手写控件的步骤 1)使用相应的控件类创建控件对象: 2)设置该控件的各种属性: 3)添加空间到视图中: 4)如果是 UIButton 等控件,还需考虑控件的单击事件等: 二.添加 UIButton ...

  6. 利用来JS控制页面控件显示和隐藏有两种方法

    利用来JS控制页面控件显示和隐藏有两种方法,两种方法分别利用HTML的style中的两个属性,两种方法的不同之处在于控件隐藏后是否还在页面上占空位. 方法一:  1 2 document.getEle ...

  7. 【IOS】模仿windowsphone列表索引控件YFMetroListBox

    有没有觉得UITableView自带的右侧索引很难用,我一直觉得WindowsPhone中的列表索引非常好用. 所以呢,我们来实现类似Windows Phone中的列表索引(这就是信仰). 最终实现效 ...

  8. IOS学习资源收集--开发UI控件相关

    收集的一些本人了解过的iOS开发UI控件相关的代码资源(本文持续补充更新) 内容大纲: 1.本人在github上也上传了我分装好的一些可重复利用的UI控件 2.计时相关的自定义UILabel控件 正文 ...

  9. iOS 专题 之 界面开发 之 控件

    iOS 之 UIViewController iOS 之 Navagation Button iOS 之 UIButton iOS 之 UITextField iOS 之 UIStackView iO ...

随机推荐

  1. Linux登录验证机制、SSH Bruteforce Login学习

    相关学习资料 http://files.cnblogs.com/LittleHann/linux%E4%B8%AD%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E8%AE% ...

  2. JSP 九个隐含JSP对象

    输入输出对象:request.response.out. 作用域通信对象:session.application.pageContext servlet对象:page.config 错误对象:exce ...

  3. workon在zsh中不起作用

    先装了workon,然后装了zsh,发现在zsh里不起作用 翻了一下网上没有解答,就看了看bashrc文件,发现一句 source /usr/local/bin/virtualenvwrapper.s ...

  4. C++中尖括号和引号的区别---转载

    如果你还看一些别的C++教程,那么你可能很早就发现了,有些书上的#include命令写作#include <文件名>,但有时候又会出现#include "文件名".你会 ...

  5. EJB3 QL查询

    http://www.blogjava.net/liaojiyong/archive/2008/07/11/56216.html EJB3 QL查询 EJB3的查询语言是一种和SQL非常类似的中间性和 ...

  6. tp框架做留言板

    首先是登录的LoginController.class.php 代码内容是 <?php namespace Admin\Controller; use Think\Controller; cla ...

  7. 图片服务器和WEB应用服务器相分离的简单方案

    只是简单说明一下原理,其它的自己探索吧:) 一.两个域名:www.domain.com和img.domain.com 二.在www域名的服务器中上传文件: up.html <form name= ...

  8. 删除(注意,删除后,后面顶上去,所以id会一直变,所以我们用class来定义,因为id是唯一的)

    删除de $(".delete").on("click",function(){ var id = $(this).attr("value" ...

  9. 【原创】angularjs1.3.0源码解析之service

    Angular服务 在angular中,服务(service)是以提供特定的功能的形式而存在的. angular本身提供了很多内置服务,比如: $q: 提供了对promise的支持. $http: 提 ...

  10. cnblog可以直接黏贴qq截图,但最好不要偷懒

    秋秋(qq)基本上算是ytkah本人开机后要开的软件了,平时也习惯用Ctrl+Alt+A快捷键来进行截图.很早以前ytkah一个无意间发现cnblog可以直接黏贴qq截图,当时截图后可能是忘记黏贴到其 ...