IOS开发入门(6)-自动布局(1)

本文介绍了iOS开发中自动布局的概念,包括自动布局的基本知识、像素和点的区别、约束关系,以及如何创建和修改约束。自动布局允许开发者通过描述视图之间的关系,来处理不同屏幕尺寸和方向的界面适配问题,简化了代码实现。文中还通过实例演示了如何在Interface Builder中创建和调整约束,以实现像素完美的布局效果。
摘要由CSDN通过智能技术生成

这些截取自《IOS开发完全上手》+部分自己的见解

PS:感觉有些概念问题还是要了解一点的

自动布局前言

  iPhone和iPod touch设备上的应用程序可以纵向或横向显示内容,并且设备配有3.5英寸或4英寸显示屏。这导致4中不同的布局:两种不同小屏幕尺寸下的纵向和横向布局。

  即使使用Visual编辑器(可视化编辑器),创建支持4中不同布局的应用程序也是一项挑战,尤其是当有动态的屏幕元素时,甚至当语言变化时也会使用不同长度的标签。其结果可能是大量的定制代码,以及针对故事版上同一界面的多个视图控制器

  自动布局是基于约束的引擎,可以让你描述视图之间的关系。自动布局接收这些描述或约束,并计算出如何跟当前屏幕大小和方向放置应用程序视图并确定其大小。有了它,就可以为一个界面只创建一个视图控制器并且掌控代码。

  在接下来的几个小节里面,将会介绍如何将自动布局纳入应用程序的设计和开发过程中。将首先探索自动布局的关键概念,并利用它们为Add/View场景设计约束。接下来,通过修改Add/View界面来使之能工作在全部两种屏幕尺寸的纵向屏幕上。可以使用实用的设计、布局和调试技巧实现这一点。最后,你会创建自己的约束并借助动态更新控制器约束的功能来增加对横向屏幕的支持

自动布局的基本知识

  当只有一种方向的一种屏幕尺寸时,设计场景时指确定哪些视图元素是需要的,然后将这些元素放置在视图中,或放置在视图层次结构里。添加旋转功能会增加复杂性,但扔然是可控的。而一旦除了添加界面方向之外还增加不同的屏幕尺寸,事情就会变得更加复杂。早期版本的IOS提供了一些灵活性,让你指定当视图的容器改变大小时,它们如何自我调整。但通常,具有视图依赖性或稍微复杂的视图层次的布局需要编写代码。往往这些代码需要做复杂计算,并且更新许多视图。

  例如,考虑在不同高度的纵向屏幕上运行应用程序。我们需要知道高度差,哪儿个视图可以移动/或调整打下,以及它们可以移动和/或调整大小到多大程度。然后,我们需要选择哪儿个视图来实际地移动和/或调整大小。如果高度差异要求移动多少个视图,那么我们很可能需要编写代码。

  纵向和横向之间的旋转更加复杂。问题也更大。

  例如,前面几节做的CarValet,我们做个旋转,然后变成这个样子。

这里写图片描述

  可以自己试试看。想一下,将设备旋转为横向,然后再恢复的过程中,单个视图元素如何移动。注意发生了多少起移动。可以看到,在不断变化的环境中发生了很多事情。每个视图都经过多个步骤。尽管中间步骤已经自动为我们做好,但最好想象一下计算每个视图的最终位置和大小。可能有太多的重新计算,使得这样做不如创建一种不同的布局。

  现在假设我们的布局是4英寸的屏幕创建,我们现在要检测3.5英寸的屏幕,计算出大小差异,移动按钮并调整汽车信息标签。实现这一种变化的一些伪代码如下:

if (!is4InchDisplay && (deltaHeight > 0.0) {
    carInfoLabel.frame.size.height = deltaHeight / 2.0;
    previousButton.frame.origin.y -= deltaHeight
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值