申明:此为本人学习笔记,若有纰漏错误之处的可留言共同探讨

可视化的搭建UI效率是很高的。所以官方苹果也是很推荐的。那么我们来学一学怎样利用系统自带的故事版(storyboard)来搭建UI。可视化搭建UI除了能够使用storyboard也能够使用xib。事实上使用它们也是很easy的,仅仅须要在xcode的右下角写处控件的名字,然后拖拽到故事板上就可以。如图

拖拽完之后。

就是依据需求去设置控件的大小,以及屏幕的适配(iphone4~iPhone 6s plus)等。在这个设置大小的点,我们就要用到约束。曾经用代码也是要用到约束去约束每一个控件的大小的。所以约束的概念也不展开讲了。(假如你实在不想用约束的话。事实上也是能够实现屏幕的适配的。能够用比例的大小去设置,类似于h5)。如今主要说说怎样实现。怎么去操作,给控件加上约束。

我如今先拖拉一个UIView来设置一个距离顶部的约束

这样设置完之后就会出现例如以下的现象

出现红色说明还有欠缺的约束没有加完。

顶部那个线就是我们加入的约束。

假如我们先写距离顶部的距离是133。那么我们不论切换到哪个屏幕的大小都是133。

我们再往左边加入一个约束,然后设置它的宽高为100。即如图

约束完之后就能够了

这样约束完之后的那个UIView的大小和位置就是固定的了。以后不论改动成哪个屏幕都是一样的。

只是这样有个缺点。它的距离的位置和大小是绝对的而不是相对的。假如你用iphone4展示出这个界面,就认为偏的话,那么用iphone6s就会显得几乎相同或者刚刚好。用样例看看,如图

所以,我们应该得用相对位置和相对大小。假如我们想让它水平居中,那么我们把原来的左边约束给删除。加入一个水平居中的约束

这样就水平居中了。再执行看看

这样就水平居中了。既然是相对约束,当然不止只只能水平居中了。比方说我要偏左一点怎么办?偏右一点怎么办?改水平居中系数。如图

点击那个edit出现后改动那个Multiplier。那个就是系数值,比1小就是往左,比1大就是往右。我们来设置一下0.6和1.8的效果看看

这样看是不是非常明显?那么这样就能够依据实际需求设定我们须要的位置了。垂直居中也是这样设置。就是选中水平约束以下那个(vertically)

写完相对位置之后,我们应该要来想想怎么设置相对大小了。为了方便演示,先把原来那个删除了。又一次拉一个UIView。把它的大小和屏幕设置成等高等宽。

把equal widths 和equal heights打上勾就能够。add上去就能够了。

设置完之后就是这样

就是由于我们还没有加位置约束。我们给它左边和上边都是0.0。这样就能够了

OK,到这里就能够实现相对大小了。

同理的,我们想改动它不是满屏大小,也能够使用系数

改动成0.4试试

宽高同理,想学习的慢慢自己搞搞。

学到这里,我们就已经学会了加绝对值的约束以及加相对值的约束。接下来的各种组合就看项目的实际需求以及你们的各种发挥各种想象力了。加油!

上传图片竟然不小心没了, 还好在点击打开别的博客里面有备份。

懒得又一次再上传一次,就放个链接好了。

iOS笔记UI--使用storyboard加入约束的更多相关文章

  1. IOS开发UI基础storyboard相关概念的认识

    本文主要介绍一些基本的概念 为后面的学习做个准备 需要了解的知识点有以下几个方面: storyboard文件的认识 IBAction 和IBOutlet UIViewController控制器的认识 ...

  2. iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期

    iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期 一.基本过程 新建一个项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉. 在stor ...

  3. iOS阶段学习第34天笔记(UI小组件 UISegment-UISlider-UIStepper-UIProgressView-UITextView介绍)

    iOS学习(UI)知识点整理 一.UI小组件 1.UISegmentedControl 分段选择器  实例代码 - (void)viewDidLoad { [super viewDidLoad]; / ...

  4. iOS开发UI篇—模仿ipad版QQ空间登录界面

    iOS开发UI篇—模仿ipad版QQ空间登录界面 一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的 ...

  5. 【转】iOS笔记-自定义控件(OC)

    原文网址:http://www.jianshu.com/p/f23862eb7b8a 导读: iOS开发中,很多时候系统提供的控件并不能很好的满足我们的需求,因此,自定义控件便成为搭建UI界面中必不可 ...

  6. 荼菜的iOS笔记--UIView的几个Block动画

    前言:我的第一篇文章荼菜的iOS笔记–Core Animation 核心动画算是比较详细讲了核心动画的用法,但是如你上篇看到的,有时我们只是想实现一些很小的动画,这时再用coreAnimation就会 ...

  7. [Android开发学iOS系列] iOS写UI的几种方式

    [Android开发学iOS系列] iOS写UI的几种方式 作为一个现代化的平台, iOS的发展也经历了好几个时代. 本文讲讲iOS写UI的几种主要方式和各自的特点. iOS写UI的方式 在iOS中写 ...

  8. iOS之UI组件整理

    作者:神兽gcc 授权本站转载. 最近把iOS里的UI组件重新整理了一遍,简单来看一下常用的组件以及它们的实现.其实现在这些组件都可以通过Storyboard很快的生成,只是要向这些组件能够变得生动起 ...

  9. iOS开发UI篇—CAlayer(创建图层)

    iOS开发UI篇—CAlayer(创建图层) 一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控 ...

随机推荐

  1. 双系统linux+win之血的教训

    绝对不要用win的软件来直接调整linux分区!!!!! 除非你不想要这个linux分区里的数据了...

  2. STL之std::set、std::map的lower_bound和upper_bound函数使用说明

    由于在使用std::map时感觉lower_bound和upper_bound函数了解不多,这里整理并记录下相关用法及功能. STL的map.multimap.set.multiset都有三个比较特殊 ...

  3. zoj 3762(求三角形的最大高)

    给出n个点,要你找到一个三角形,它的高是最长的. 思路:暴力超时了,是用先找出n个点与其他点的最长边,再枚举顶点过的.......具体证明不知道..... #include<algorithm& ...

  4. 手记:配置IIS服务器,支持sis、SISX、3GP、ADP、AMR、JAD、JAR、MMF、MFM、PMD、UMD等文件下载

    发此博文原因是遇到一个 手机端读取服务器端.amr格式文件失败的例子.   反复测试发现从服务端无法播放,或下载.amr格式的文件.就想到可能是服务器站点托管服务 IIS不支持对.amr格式的解析,意 ...

  5. DeepNLP的核心关键/NLP词的表示方法类型/NLP语言模型 /词的分布式表示/word embedding/word2vec

    DeepNLP的核心关键/NLP语言模型 /word embedding/word2vec Indexing: 〇.序 一.DeepNLP的核心关键:语言表示(Representation) 二.NL ...

  6. 【Unity】角色沿路线移动/朝着目标移动

    先在场景中放置一连串物体作为角色移动路线的关键点,可以把关键点的触发器Trigger拉得大一些方便角色接触到(如酷跑/赛车类项目可以把关键点的触发器做成拦截整个道路的墙面形状).让角色从开始位置朝着第 ...

  7. PropertyChangeSupport

    1 import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; /** * @author h ...

  8. linux安装setup

    安装setuptool #yum install setuptool      系统服务管理 #yum install ntsysv       防火墙设置.网络设置 #yum install ipt ...

  9. Extjs4.x treepanel,treegrid 节点选择,选中某个节点

    //官方推荐 this.getModuleGrid().getRootNode().cascadeBy(function () { this.set("checked", fals ...

  10. mysql查找有某列但没有此列索引的表

    select a.TABLE_SCHEMA,a.TABLE_NAME from information_schema.`COLUMNS` a left join (select 'etl_stamp' ...