这篇文章用几个简单的例子来介绍XCode6.1故事板中约束的使用方法。

 
现在iOS设备屏幕的尺寸也有很多种了,尤其是有了iPhone6 Plus以后,再不关注界面的尺寸适配就有点说不过去了。
 
说一个很简单的要求,把一个Label水平对齐在各种尺寸的屏幕上。
 
在IPHONE4、4s的时候,其实这个都不用关心,只要把文字拖到故事板中间对齐就好了。但是有了大屏幕以后,这样做运行的时候是偏得。
 
不废话了,下面介绍约束的使用。
 
 
把文字拖到屏幕中央。

点击约束里的“对齐”图标,勾选上水平居中,然后点击下面的"Add 1 Constraint"按钮。这个时候再在不同尺寸的模拟器上运行,文字始终会水平居中。(垂直居中的话,方法一样,勾选上垂直居中即可)

添加水平居中的约束后,故事板里的文字看起来是这样的。

接下来,我再添加一个文字与界面顶部间距的约束。

点击约束中左数第二个按钮,弹出的菜单里有4个方向的文本框,每个文本框表示该控件与界面的边距值。

我现在想要让文字始终距离顶部保持46像素,那么就点击4个方向中的上方文本框下面的那个红色虚线,点击后变成红线,说明对该方向保持约束。

最后点击下面的"Add 1 Constraint"按钮。嗯,这样文字与顶部间距的约束就设置好了。

查看一个控件到底添加着哪些约束,可以从下面两张图片中的位置看到。

 
当你想去掉某个约束的时候,只要在上图中选中约束名称然后按delete键删除即可。
 
 
想要去掉某个控件上所有的约束,可以在约束控制部分的左数第3个按钮里选择"Clear Constraints"。

 
 
 
下面再举一个例子。
 
比如故事板中,有一张图片放在界面的左下角。如图:
 
这是在4寸屏幕里的样子,在5.5寸屏幕里会怎样呢?下面是截图:

哦~!这可不是我想要的效果,随着屏幕的变大,图片被拉大而且超出了屏幕范围。

 
下面给这个图片加上约束。

首先,把左右和底部的边距控制点选上,然后勾选下面的“Aspect Ratio”意思是图片等比缩放。点击添加按钮。
 
现在在5.5寸模拟器下运行一下看看效果:
 

恩,这是我想要的。
 
 
 
随便选择一个控件,然后点击约束里的对齐按钮,你会发现菜单里有很多选项是禁用的。这是为什么呢?这是因为这些选项只有在同时选中多个控件的时候才可以使用。也就是用来多个控件之间的约束关系。
 

例如,我的界面里有两个控件,一个是文字控件“登录名”,一个是图片控件“白线”。当屏幕尺寸变化的时候,它们的相对位置很可能是错乱的。所以下面要同时给它们两个控件加上彼此之间的约束。

同时选中文字控件和图片控件:

点击约束中的对齐按钮,勾选头对齐和底边对齐,后面的值可以根据界面的具体情况来设置。设置好这个约束以后,即便界面尺寸发生了变化,它们彼此之间还是保持这样的间距不会变乱。

 
 
OK,就先简单介绍到这里吧,其他的约束功能其实都差不多,多尝试几次就会了。

Xcode中的约束用法的更多相关文章

  1. Xcode中git的用法介绍与"Please tell me who you are"问题的解决方式

    我在之前多篇博客中解说了怎样使用命令行操作git,能够大大提高我们的工作效率.详细能够參考<Git学习札记><Git学习札记--进阶>等文章.事实上对于同一个工具,我们有不同的 ...

  2. mysql中唯一约束用法

    以前比较naive,有次同事一定要在表里建唯一约束的时候,我就很纳闷为啥非要在db层面做限制,在自己的业务代码里做啊,就是说入库的时候先查一遍有没有,没有记录的情况再准许入库. 后来发现如果只是自己处 ...

  3. xcode中一些便捷用法@literals简写

    总结一下,新的属性绑定规则如下: ●  除非开发者在实现文件中提供getter或setter,否则将自动生成 ● 除非开发者同时提供getter和setter,否则将自动生成实例变量 ●  只要写了s ...

  4. Xcode中的变量模板(variable template)的用法

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 你可能经常会写一些小的代码片段,里面自然少不了一些关键的变量. ...

  5. 泛型中new()约束的用法

    一..NET中支持的类型参数约束有以下几种 where T : struct              T必须是一个结构类型where T : class               T必须是一个类( ...

  6. [翻译]使用Swift在Xcode中创建自定义控件

    使用Swift在Xcode中创建自定义控件 原文 IBDesignable and IBInspectable With IBDesignable and IBInspectable, develop ...

  7. 网络粘贴---Xcode中可用到的快捷键

    快捷键: 1.StoryBoard技巧 当你想直接在view中选择自己想要的元素时,但是又碍于一个view上叠加的元素太多很难直接选中,那么在这时,你同时按住键盘上的shift和 control键,然 ...

  8. SQL中CONVERT()函数用法详解

    SQL中CONVERT函数格式: CONVERT(data_type,expression[,style]) 参数说明: expression 是任何有效的 Microsoft® SQL Server ...

  9. XCode中使用SVN 教程

    修改subversion.config方法: 可以直接在终端上输入:vi ~/.subversion/config来编辑. 也可以通过Finder搜索.subversion,点击下边的+号,进入高级搜 ...

随机推荐

  1. java 三大基本特征

    java中的面向对象的三大基本特征是:[封装].[继承].[多态] 封装:对象要有一个明确的边界:边界的划分(对象各司其职.对象的粒度.对象的可重用性) 属性(bean.pojo):私有的privat ...

  2. C#主从表查询

    软件的使用必然涉及到主表和子表的操作,我们先在SQLite中创建子表.比如 创建一学生信息表做主表,再创建一个学生成绩表做子表.然后我们在程序中成绩 方法来连接子表. 判断bindingsource中 ...

  3. 快速理解JavaScript面向对象编程—原型

    总的来说js语言就是门面向对象编程的语言,对象这个概念几乎贯穿了整个js的学习. 对象 创建对象两种方法:(若要生成对象实例必须调用构造函数) 1.var obj = {name:"jer& ...

  4. insert后面value可控的盲注(第一次代码审计出漏洞)

    这个叫诗龙的cms真的很感谢他的编写人,全站注入~~一些特别白痴的就不说了,这里有一个相对有点意思的 很明显的注入,然后去直接利用报错注入想爆出数据结果发现没有开报错模式. 报错注入http://ww ...

  5. vs2013缺少Mvc 怎么办?

    命名空间System.Web中不存在类型或命名空间名称Mvc是否缺少程序集引用? 以前vs2010或2012以前的引用一下就有了,为何现在vs2013没有,该这么处理呢?? 解决方案: 打开PCM:  ...

  6. js实现对象或者数组深拷贝

    今天遇到个问题,就是vue绑定的数组在push中所有的数组都会跟着改变.这个主要是因为 JavaScript中对象或者数组等引用类型,直接拷贝,改变一个另外一个也会改变: 有个简单的方法就是先转换为字 ...

  7. P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib

    题目描述 农民约翰的母牛总是产生最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们.农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组 ...

  8. React 实践记录 01 组件开发入门

    Introduction 本文组成: Ryan Clark文章Getting started with React的翻译. 博主的实践心得. React由Facebook的程序员创建,是一个非常强大的 ...

  9. gin实现spring boot url拦截器

    1.定义中间件 func middle(c *gin.Context) { fmt.Println("我是中间件") c.Next() } 2.对要拦截的路由进行分组并引入中间件 ...

  10. 【Linux】使用Cockpit进行主机管理

    Cockpit 进行主机监控 官网文档: https://cockpit-project.org/running.html 版本信息 针对Red Hat [root@master ~]# cat /e ...