ios 自动布局的例子

自动布局的例子

自动布局便于自动解决许多复杂的布局问题,而不需要手动操纵。 通过创建正确的约束组合,您可以创建布局传统上难以管理的代码,如等距的观点,适应变化方向或大小,滚动视图内元素影响的大小滚动内容,或不滚动的元素内部滚动视图的内容。

与自动使用滚动视图布局

当你创建一个应用程序使用自动布局,滚动视图可以提供一个独特的挑战。 滚动内容必须设置正确的大小,以便用户可以滚动浏览所有可用的内容,例如,如果你需要锁定一个上下文视图滚动视图,如地图的规模和传说,很难确保元素不滚动与其它内容。

控制滚动视图内容的大小

内容滚动视图内的大小取决于它的后代的约束。

设置一个滚动视图的大小

  1. 创建滚动视图。
  2. 里面的UI元素。
  3. 创建约束完全定义滚动视图内容的宽度和高度。

你必须确保你创建约束中的滚动视图内。 例如,当为一个视图定义的约束,没有一个内在内容的大小,你需要的不仅仅是一个领先的约束还必须创建后缘,宽度,高度限制。 不能有任何遗漏的约束,从滚动视图的一个优势。

创建固定视图内滚动视图

你会发现你想要创建一个区域内滚动视图不当用户移动卷轴滚动视图的内容。 你使用一个单独的完成这个 容器视图 

锁定一个视图滚动视图内

  1. 创建一个容器视图滚动视图。
  2. 创建滚动视图容器视图中,并将其与所有边缘等于零分。
  3. 创建和滚动视图的子视图内。
  4. 从容器视图的子视图创建约束。

下面的示例使用显示在上面的任务的步骤如何定位一个文本视图内滚动视图。 在这个例子中,文本视图保持底部的滚动视图,不移动时的滚动视图内容感动。

首先,创建容器视图,将包含滚动视图。 设置容器视图的大小等于所需的滚动视图的大小。

创建容器视图后,创建一个滚动视图,并将其容器的内部视图。 调整滚动视图,这样所有的边缘充裕容器视图的边缘,通过设置距离为0。

创建另一个视图并将其内部滚动视图。 在这个例子中,一个文本视图放置在滚动视图。

将文本视图后,从文本视图容器视图创建约束。 创建约束,锚文本视图容器视图(跳过滚动视图)锚文本视图相对于容器视图,这确保了滚动视图不会滚动文本视图。

创建一个约束,跨越多个视图在视图层次,一般容易Control-drag从容器视图的视图界面构建器大纲视图。

在出现的约束叠加,为视图设置所需的约束。

在这个示例中,创建约束从领导、落后,底边的文本视图容器视图。 文本视图的高度也有限。

以下两个数据显示,在iOS应用程序模拟器,在正常和景观位置。 文本视图底部的滚动视图和限制不移动作为移动的滚动视图。

间距和包装

自动自动间隔布局提供了一些技术意见和调整项目根据他们的内容。 以下部分描述了如何创建约束,使可见视图基于设备的方向等间距。

创造平等的间距的观点

列出几个视图基于设备的方向等间距,创建间隔视图之间的可见的观点。 设置这些垫片观点正确的约束确保可见视图能够保持间隔的基于设备的方向。

空间观点的比例

  1. 创建可见的视图。
  2. 创建间隔视图可见视图的数量加1。
  3. 交替放置你的观点,从一个间隔的观点。

    空间两个可见视图,把所有的观点在下面的模式中,从左边的屏幕和移动正确的:

    spacer1 view1 spacer2 view2 spacer3 

  4. 限制间隔的观点,他们的长度相等。

    注意: 间隔视图的高度可以是任何值,包括 。 然而,您必须创建约束的高度views-don没有离开了模棱两可的高度。

  5. 创建一个从第一个垫片主要约束视图容器视图。
  6. 创建一个落后于最后一个间隔约束视图容器视图。
  7. 创建约束之间的间隔视图和可见的观点。

注意: 当垂直间距的观点,从屏幕的顶部,并将每个视图下面前面的视图。 的高度设置间隔相等的看法。

下面的示例使用在上面的任务的步骤说明如何位置两个视图等间距。 的间隔视图是注释的例子,但通常是空无的背景。 首先,创建两个视图并将其故事板。

添加三个间隔发表的左边左边的视图,一个在两种观点之间,一个右边的右边的视图。 间隔视图不需要相同的大小在这个时间,因为它们的大小将通过约束。

间隔视图创建以下约束:

  • 间隔视图2和垫片视图的宽度约束3等于间隔视图的宽度1。
  • 限制间隔观点1的宽度大于或等于最低所需的宽度。
  • 从间隔视图创建一个领先的空间容器约束1到容器。
  • 创建一个水平间距约束从间隔视图1 - 1。 设置这个约束是一个小于或等于约束优先级为1000。
  • 从间隔创建水平间距约束视图2 -视图1和2。 设置这些限制是一个小于或等于约束优先级为999。
  • 从间隔视图创建一个水平间距约束3查看2。 设置这个约束是一个小于或等于约束优先级为1000。
  • 从间隔视图创建一个落后的空间容器约束3到容器。

这些约束创建两个可见视图和三个无形的视图(间隔视图)。 这些间隔视图自动调整装置的方向变化,保持可见视图等间距,如以下两图所示:

动画由自动布局变化

如果你需要完全控制动画由自动布局变化,你必须让你的约束以编程方式更改。 的基本概念是相同的iOS和mac OS X,但有一些细微的差别。

在iOS应用程序,您的代码将类似于以下几点:

[containerView layoutIfNeeded]; // Ensures that all pending layout operations have been completed
[UIView animateWithDuration:1.0 animations:^{
     // Make all constraint changes here
     [containerView layoutIfNeeded]; // Forces the layout of the subtree animation block and then captures all of the frame changes
}];

在OS X中,使用以下代码在使用layer-backed动画:

[containterView layoutIfNeeded];
NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
     [context setAllowsImplicitAnimation: YES];
     // Make all constraint changes here
     [containerView layoutIfNeeded];
}];

当你不使用layer-backed动画,动画必须持续使用约束的动画:

[[constraint animator] setConstant:42];
时间: 2024-10-12 08:04:37

ios 自动布局的例子的相关文章

iOS 自动布局详细介绍

1. 自动布局的理解 iOS自动布局很有用,可以在不同size的屏幕上运行,原先看的头痛,还是习惯用最蠢的[UIScreen mainScreen].bounds.size.width等来布局,后来实在不行了,开始好好地看自动布局,发现理解后真的很好用,现在就来分享分享我的心得吧. 首先要明白一个控件在屏幕上的位置怎么样才能真正地确定.最简单的情况是: 1. 例如一个矩形,只要知道它左上角点的坐标,宽,高,那么位置就固定了. 2. 例如一个圆,只要知道它的圆心坐标,半径,那么位置就固定了. 自动

iOS自动布局——Masonry详解

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由鹅厂新鲜事儿发表于云+社区专栏 作者:oceanlong | 腾讯 移动客户端开发工程师 前言 UI布局是整个前端体系里不可或缺的一环.代码的布局是设计语言与用户视觉感受沟通的桥梁,不论它看起来多么简单或是琐碎,但不得不承认,绝大部分软件开发的问题,都是界面问题.那么,如何高效的完成UI开发,也是软件行业一直在克服的问题. 所以,软件界面开发的核心点即是:如何减少UI设计稿的建模难度和减少建模转化到代码的实现难度 最初iOS提供了

iOS 自动布局

自动布局框架 Masonry PureLayout FLKAutoLayout KeepLayout UIView+Autolayout 相关教程: iOS 开发实践之 Auto Layout Masonry介绍与使用实践(快速上手Autolayout) IOS自动布局之Autoresizing iOS中的相对布局:AutoLayout

iOS 自动布局教程

springs和struts的问题 你肯定很熟悉autosizing masks-也被认为是springs&struts模式.autosizing mask决定了当一个视图的父视图大小改变时,其自身需要做出什么改变.它有一个灵活的或固定不变的margins(struts)吗?它的宽和高要做出什么改变(springs)? 举个例子,一个宽度灵活的视图,如果其父视图边框,那么它也会相应的变宽.一个视图右边拥有固定的margin,那么它的右边缘将会一直粘住其父视图的右边缘. autosizing系统在

学会爱上iOS自动布局(Auto Layout)

本文翻译自Yari Dareglia的LEARN TO LOVE AUTO LAYOUT文章 先生们,女士们,让我们以正确的心态开始本教程吧:自动布局就是简单! 我花了一段时间来掌握自动布局是如何工作的,现在回头看,我发现我绝对是高估了这个问题.在这篇文章中我将介绍一些基本的方面和一些技巧,我敢肯定会帮助你在面对自动布局时不在害怕. Xcode4 在Xcode5之前,自动布局可能是你在你的应用中实现的最讨厌的"功能".标记"使用自动布局"就像说"把我变疯吧

iOS 自动布局扩展应用:代码中动态调整布局常量

一.设计需求 iOS Storyboard 自动布局技术,是iOS 6才出来的新技术,相当于多屏幕分辩率下自适应的技术. 但是一些复杂情况还是难处理. 比如有一个界面需求,进度条上显示标签,这个需求不难,难的是显要在显示表格框内,在各种机型显示正常. 最初设定是垂直居中向上偏15个像素 这是iPhone 4S 显示效果,下面与滑块还有错位 但是在iPhone 6下显示,下面有错位,但是上面留空太多 但如果把偏移量设为21.则出现另一种情况. 大屏幕的手机显示完美. 但是iPhone 4S下就错位

iOS自动布局学习(UIView+AutoLayout)

自动布局虽然在iOS6的时候已经推出,不过由于各个原因并没有被开发组广泛使用.一方面是大家的app支持版本都是低于iOS6的,另一方面来说是Xcode支持木有现在这么好.以前由于iPhone设备相对固定,所以在纯代码,纯坐标的布局下很流行,不过现在随着iPhone6发布,如果还要写一大堆乱七八糟的绝对坐标去适配,那工作量和维护成本是很大的. 下面的一些基础直接拿小伙伴分享整理的吧,之后向大家推荐一个开源的库,对AutoLayout进行了封装,用起来很简单也高效. 1.AutoLayout是什么?

iOS 自动布局过程

自动布局将视图显示在屏幕上的步骤: 更新约束,它会从子视图传递到父视图,设置布局信息:约束更新时自动触发setNeedsUpdateConstraints:updateConstraints可以增加本地约束 更新布局,从父视图到子视图,应用约束到视图上:setNeedsLayout可以触发这个传递,但是不是立即执行,而是多个布局请求合并到一个布局传递:layoutIfNeeded/layoutSubtreeIfNeeded(iOS/OS X)会强制更新视图树. 参考自:先进的自动布局工具箱

掌握iOS自动布局

1,自动布局是一种基于约束的布局(constraint-based layout)引擎,它可以根据开发者在对象上的约束自动调整大小与位置. 2.在iOS 6之前使用的布局模型是“spring&struts”模型.虽然大部分情况下运行很有效率,但旋转时仍然需要写代码为子视图自定义布局. 3.布局代码在layouSubviews方法中编写. 4.在Xcode 5中使用自动布局时第一个引人注目的变化是Xcode 5不会自动添加约束,除非你明确的要求Xcode添加. Xcode 5让开发者控制布局,不会