iOS界面布局之二——初识autolayout布局模型(一)

简介: iOS界面布局之二——初识autolayout布局模型

iOS界面布局之二——初识autolayout布局模型


一、引言


    在上一篇博客中介绍了传统的布局方式:autoresizing。随着iphone型号的越来越多,屏幕的标准也更加多样化,通过autoresizing已经不能满足开发的需求,而进行两套布局或者动态代码控制又大大增加了开发者的工作量,autolayout的出现拯救个这一切,它让动态布局变的十分简单便捷。


   autoresizing介绍:http://my.oschina.net/u/2340880/blog/423357


二、autolayout的设计思想


   正如storyboard的设计目的是为了让开发者将更多的精力投入到逻辑实现而不是界面布局一样。autolayout的设计思想是让开发者将布局上更多的精力放在控件关系上而不是坐标。我们只需要关心控件之间的摆放关系,而并不需要关心这是如何实现的。因此你使用autolayout进行布局时,就是在添加一个一个的约束。控件与控件之间的约束,控件与父视图之间的约束。


1、了解几种约束


   点击xcode的storyboard文件,在xcode的导航栏上点击Edito,然后选择Pin,可以看到如图,其中是可以添加的约束类型。


image.png


Width:对视图宽度的约束


Height:对视图高度的约束


Horizontal Spacing:对视图间水平距离的约束


Vertical Spacing:对视图间垂直距离的约束


Leading Space to Superview:与父视图左边界的约束


Trailing Space to Superview:与父视图右边界的约束


Top Space to Superview:与父视图上边界的约束


Bottom Space to Superview:与父视图下边界的约束


Widehs Equally:视图等宽约束


Heights Equally:视图等高约束


2、网上的一个很简单的约束例子


   了解了上面的几种约束,现在我们来实现一个效果,借用网上关于autolayout自动布局的一个小例子。我们在storyboard中拖入三个label,使它们如下效果:



image.png

然后我们将屏幕横过来,会发现这时的效果并不是我们想得到的结果:


image.png


在进行添加约束之前,我们先来理清这三个视图之间的关系,将上面两个视图编号为1.2,下面那个视图编号为3.


(1)1和2的宽和高相等


(2)1距离父视图左边20px


(3)2距离父视图右边20px


(4)3距离父视图左边20px,右边20px


(5)1和2水平间距20px


(6)1与3垂直间距20px


(7)1和2距离父视图上边距50px


(8)3距离父视图下边距20px


(9)3与1和2的高度一样


通过上面的约束,所有视图的位置都将被相对的固定,下面我们只需要按照顺序一一添加即可。


(1)选中1和2视图(按住cmd键可以多选),然后点击Editor->Pin之后选择Widehs Equally,重复上面的过程,选择Heights Equally。我们会看到如下的效果:

image.png



几点注意:


*线是橙色代表警告,我们没有添加足够的约束来确定位置或者约束有矛盾。


*如果线的中间显示的不是等号,而是数字,则是因为视图1和2的尺寸设置的不等,约束有矛盾。


(2)选中1.重复上面步骤,选择Leading Space to Superview。这时1的左边又会增加一条线:


image.png


点击这条线,在右边的设置去将约束值设置为20:


image.png


(3)重复上面步骤,选中视图2,添加Trailing Space to Superview约束。


(4)选中视图3,重复上面步骤。


(5)选中1和2,添加Horizontal Spacing,设置为20.


(6)选中1和3,添加Vertical Spacing,设置为20.


(7)为1和2分别添加Top Space to Superview约束。


(8)为3添加Bottom Space to Superview约束。


(9)选中1和3,添加Heights Equally约束。


上面的过程虽然繁琐,但是逻辑性十分清晰,这时你会发现所有的线都变成了蓝色,约束已经添加完整,我们再次运行后横屏,效果如下:


image.png


这就是我们想要的结果了。



目录
相关文章
|
26天前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
29 2
|
3月前
|
安全 iOS开发
iOS页面布局:UIScrollView的布局问题
iOS页面布局:UIScrollView的布局问题
70 8
|
4月前
|
Android开发 iOS开发 C#
Xamarin.Forms:从零开始的快速入门指南——打造你的首个跨平台移动应用,轻松学会用C#和XAML构建iOS与Android通用界面的每一个步骤
【8月更文挑战第31天】Xamarin.Forms 是一个强大的框架,让开发者通过单一共享代码库构建跨平台移动应用,支持 iOS、Android 和 Windows。使用 C# 和 XAML,它简化了多平台开发流程并保持一致的用户体验。本指南通过创建一个简单的 “HelloXamarin” 应用演示了 Xamarin.Forms 的基本功能和工作原理。
106 0
|
6月前
|
编解码 安全 Android开发
探索iOS与Android开发的差异:从界面到性能
【6月更文挑战第10天】在移动应用开发的广阔天地中,iOS和Android两大平台各占山头,它们在设计理念、用户体验、性能优化等方面展现出独特的魅力。本文将深入探讨这两大系统在开发过程中的主要差异,从用户界面设计到性能调优,揭示各自背后的技术逻辑与创新策略,为开发者提供全面的视角和实用的开发指南。
|
7月前
|
安全 Swift iOS开发
【Swift 开发专栏】Swift 与 UIKit:构建 iOS 应用界面
【4月更文挑战第30天】本文探讨了Swift和UIKit在构建iOS应用界面的关键技术和实践方法。Swift的简洁语法、类型安全和高效编程模型,加上与UIKit的紧密集成,使开发者能便捷地创建用户界面。UIKit提供视图、控制器、布局、动画和事件处理等功能,支持灵活的界面设计。实践中,遵循设计原则,合理组织视图层次,运用布局和动画,以及实现响应式设计,能提升界面质量和用户体验。文章通过登录、列表和详情界面的实际案例展示了Swift与UIKit的结合应用。
308 1
|
Swift iOS开发
iOS 用一个布局来解决嵌套问题—— UICollectionViewCompositionalLayout
iOS 用一个布局来解决嵌套问题—— UICollectionViewCompositionalLayout
iOS 用一个布局来解决嵌套问题—— UICollectionViewCompositionalLayout
|
机器学习/深度学习 API iOS开发
iOS MachineLearning 系列(17)—— 几个常用的对象识别 CoreML 模型
上一篇文章中,我们介绍了几个官方的图片分类的模型,图片分类模型的应用场景在于将图片中最主要的事物进行识别,在已有的词库中找到最可能得事物。而对象识别则要更高级一些。再之前的文章,我们介绍过可以使用官方提供的API来进行矩形识别,文本识别,二维码识别以及人脸识别等,这类识别功能的特点是我们不仅可以将图片中的物体位置和尺寸分析出来,还可以对其进行类别的分类。
374 0
|
7月前
|
机器学习/深度学习 PyTorch TensorFlow
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
192 0
|
iOS开发
iOS布局中的抗被拉伸、抗压缩优先级
iOS布局中的抗被拉伸、抗压缩优先级
709 0
|
人工智能 数据挖掘 API
iOS MachineLearning 系列(20)—— 训练生成CoreML模型
本系列前面的文章详细的介绍了在iOS中与AI能力相关的API的使用,也介绍了如何使用训练好的CoreML模型来实现更强大的AI能力。然而,无论是成熟的API提供的能力,还是各种各样的三方模型,有时候都并不能满足某一领域内的定制化需求。当我们拥有很多的课训练数据,且需要定制化的AI能力时,其实就可以自己训练生成CoreML模型,将此定制化的模型应用到工程中去。
436 0
iOS MachineLearning 系列(20)—— 训练生成CoreML模型