前言

ios设备的尺寸越来越多,针对一款app可能要适配到多种设备。多种尺寸。所以。我们期望我们的app可以autoLayout。本文主要介绍在Xcode中使用constraint。未来会不定期对此文进行更新。

约定

本文中view指代从Objuect Library中拖拽出来的各种view

基础

一个view在界面显示,至少有三种决定条件

  • 一、自身大小:如width、height
  • 二、相对于父容器的位置:如固定起始坐标位置或相对位置
  • 三、相对于兄弟view的位置:如顶部对齐、左右距离、堆叠层次

思路

storyboard中,拖拽出来的view都有默认的样式,在拖动的过程中会有蓝色的辅助线,帮助我们布局。可是位置大小等都是固定的,我们须要给每一个view设置constraint,告诉它在不同的情况下应该怎样表现。

辅助线

编译执行Label并没有垂直水平居中

编译结果

布局的过程,就是确定view的水平位置、垂直位置以及相对位置

需求

一种常见的情况:一个搜索框,一个搜索button

搜索框:长度要随着界面变化进行伸缩。与确定button间距20,距离左边0。顶部10,高40

确定button:顶部10,右边0,与搜索框间距20,宽50。高40

先来看下终于效果

imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" class="imagebubble-image" alt="" style="">

竖屏

旋转屏

实现步骤

  • 1、拖拽一个text Field,一个Button到storyboard
  • 2、注意storyboard底部的button

    constraintbutton

    三个button各自是

    Align : 主要用来进行兄弟view对齐

    Pin :自身大小、相对容器位置

    Resolve auto layout issues :应用constraint后更新storyboard

  • 3、选中Button ,点击Pinbutton,上边距10,分别设置左边距20,右边距0,高度40,宽度50(button的宽度基本是固定的)

    宽度和高度都是描写叙述自身大小,条件一

    上边距和右边距都是相对父容器,条件二

    左边距是相对于兄弟view的位置,条件三

    imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" class="imagebubble-image" alt="" style="">

    Button constraint

    点击 Add 5 Constraints

    结果就变成下边的样子了

    结果
  • 4、这个时候,我们点击Resolve auto layout issues ,并选择Selected
    Views
    下的Update Frame

    imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" class="imagebubble-image" alt="" style="">

    Update Frame
  • 5、如今同一时候选中Buttontext
    Field
    ,点击Align button。勾选Top
    Edges
    ,从icon上我们就能够看出来,是顶部对齐的意思

    顶部是相对于兄弟view的位置。条件三。

    同一时候。隐含的text Field相对父容器顶部的位置和Button一样,条件二

Top Edges

点击 Add 1 Constraints

Add 1 Constraints

点击Resolve auto layout issues ,选择Selected
Views
下的Update Frame

Update Frame
  • 6、如今选中text Field,点击Pin button。设置左边距0和高度40。点击 Add
    2 Constraints


    高度40。条件一

    左边距,条件二

    隐含的,宽度是从父容器到搜索button的左边20的位置,条件一

设置text Field左边距

点击Resolve auto layout issues ,选择Selected
Views
下的Update Frame

Update Frame结果

改动Button的文字为搜索就算完毕啦~


iOS开发之autoLayout constraint的更多相关文章

  1. iOS开发之Autolayout

    1.概述 在以前的iOS程序中,是如何设置布局UI界面的? (1)经常编写大量的坐标计算代码 (2)为了保证在3.5 inch和4.0 inch屏幕上都能有完美的UI界面效果,有时还需要分别为2种屏幕 ...

  2. iOS开发之AutoLayout中的Content Hugging Priority和 Content Compression Resistance Priority解析

    本篇博客的内容也不算太复杂,算是AutoLayout的一些高级的用法.本篇博客我们主要通过一些示例来看一下AutoLayout中的Content Hugging Priority以及Content C ...

  3. 李洪强iOS开发之iOS好文章收集

    李洪强iOS开发之iOS好文章收集 该文收集朋友们转发或自己的写的技术文章,如果你也有相关的好文章,欢迎留言,当好文章多的时候,我会对这些好文章进行分门别类 文章 简述 日期 直播服务配置 使用 ng ...

  4. iOS开发之Socket通信实战--Request请求数据包编码模块

    实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...

  5. iOS开发之UISearchBar初探

    iOS开发之UISearchBar初探 UISearchBar也是iOS开发常用控件之一,点进去看看里面的属性barStyle.text.placeholder等等.但是这些属性显然不足矣满足我们的开 ...

  6. iOS开发之UIImage等比缩放

    iOS开发之UIImage等比缩放 评论功能真不错 评论开通后,果然有很多人吐槽.谢谢大家的支持和关爱,如果有做的不到的地方,还请海涵.毕竟我一个人的力量是有限的,我会尽自己最大的努力大家准备一些干货 ...

  7. iOS开发之 Xcode6 添加xib文件,去掉storyboard的hello world应用

    iOS开发之  Xcode6.1创建仅xib文件,无storyboard的hello world应用 由于Xcode6之后,默认创建storyboard而非xib文件,而作为初学,了解xib的加载原理 ...

  8. iOS开发之loadView、viewDidLoad及viewDidUnload的关系

    iOS开发之loadView.viewDidLoad及viewDidUnload的关系 iOS开发之loadView.viewDidLoad及viewDidUnload的关系    标题中所说的3个方 ...

  9. iOS开发之info.pist文件和.pch文件

    iOS开发之info.pist文件和.pch文件 如果你是iOS开发初学者,不用过多的关注项目中各个文件的作用.因为iOS开发的学习路线起点不在这里,这些文件只会给你学习带来困扰. 打开一个项目,我们 ...

随机推荐

  1. Lucene中Analyzer语句分析

    Lucene中Analyzer语句分析,利用lucene中自带的词法分析工具Analyzer,进行对句子的分析. 源代码如下: package com.test; import java.io.IOE ...

  2. Tomcatsession共享方案--memcached-session-manager

    https://github.com/magro/memcached-session-manager/wiki/SerializationStrategies     MSM的特性:    a.支持t ...

  3. ios - masonry第三方库使用自动布局(参考:http://www.cocoachina.com/ios/20141219/10702.html)

    #import "ViewController.h" #import "Masonry.h" #define kWeakSelf(weakSelf) __wea ...

  4. MySQL 5.6 Reference Manual-14.3 InnoDB Transaction Model and Locking

    14.3 InnoDB Transaction Model and Locking 14.3.1 InnoDB Lock Modes 14.3.2 InnoDB Record, Gap, and Ne ...

  5. Redis 四:存储类型之散列类型

    1.散列类型表达方式简介: =========================================== 键 字段 值 =================================== ...

  6. Oracle PL/SQL开发基础(第三十四弹:RAISE_APPLICATION_ERROR)

    RAISE_APPLICATION_ERROR在子程序内部使用时,能从存储子程序中抛出自定义的错误消息.这样就能将错误报告给应用程序而避免范围未捕获异常. 语法如下: RAISE_APPLICATIO ...

  7. 杭电1003 Max Sum TLE

    这一题目是要求连续子序列的最大和,所以在看到题目的一瞬间就想到的是把所有情况列举出来,再两个两个的比较,取最大的(即为更新最大值的意思),这样的思路很简单,但是会超时,时间复杂度为O(n^3),因为有 ...

  8. concurrently - npm 同时运行前端和后台服务

    项目基于vue(前端)+node(后台),需要启动两个服务 0.文件夹结构及package.json内容: 1.客户端 npm run dev 2.服务器 cd server npm run serv ...

  9. bootstrap中container 类和container-fluid类的区别container类所谓的自适应也是通过margin的改变来完成,container-fluid类的百分百宽度是指在固有的15px的padding前提下宽度总是当前视口的宽度。

    container 类和container-fluid类的区别体现在是否有随视口宽度改变的margin存在. container类所谓的自适应也是通过margin的改变来完成,container-fl ...

  10. 在虚拟机安装Oracle,在本地电脑上运行sql develer出现ora-12514

    问题是解决了,先描述一下,本人用的虚拟机系统是server 2003 1.打开虚拟机,然后不管了 2.打开本地的sql developer,登录,出现了一个小白框:ora-12514:listener ...