AutoLayout-Start

2015-11-16  本文已影响92人  faterman

开发过程

在开发过程中我经历了从 magic number -> size mask -> autolayout 的过程。其中项目过程从纯代码编写过渡到了代码结合xib文件布局编写。最近一个项目完全采用StoryBoard来编写。

但是完全使用 StoryBoard + AutoLayout 布局形式完成界面开发,在高效的同时存在一些弊端,就是无法精确控制加载时机,仍旧需要在一些时间针对不同的界面数据元素来进行约束条件的更新,代码会显的有些混乱。也从一些资料中得到 StoryBoard 在多人协作开发时容易产生冲突的问题。正好项目部分功能界面要进行较大的改动。决定采取 AutoLayout 纯代码手写布局,并使用了Masonry。在此做一个记录。

有关AutoLayout的一些事

AutoLayout核心是加在view上的约束,这项技术会根据加载在view上的约束来动态计算view在整个窗口系统中的大小和位置。例如登陆界面想防治一个logo,你可以让这个logo的图片垂直水平居中。然后放置一个输入框在距离logo底部10dp的地方,然后让输入框和logo水平中心一致。

这种方式能够让你一次编写的界面布局在内部、外部变化中都有良好的表现:

外部变化

外部变化发生在当你布局的superview的大小和形状发生变化的时候。下面的每一种变化都会要求我们的界面布局合理的更新内容的大小彼此间的留白。这样的界面布局才能说的上强壮的界面布局。

这其中的多数变化都是发生在运行的时候。需要开发出的App能够动态的响应。

内部变化

内部变化来自用户交互引起的界面变化。

深入理解Constraint

其实视图约束就是一些列等式构成的,他们一起构成了这种布局的一种可能方案,并展示出来。比如下面的例子:



这个约束的意思是红色view的leading edge必须在距离蓝色view的trailing view 8points的地方。他的方程会有很多本分组成:

AutoLayout的Attributes

Attribute通常定义一个可以被约束的属性。通常来说,包括四条边(Top、Bottom、Leading、Trailing)。还有高度(height)、宽度(width),水平垂直中心,文本对象还会有baseLine。


可以翻看NSLayoutAttribute来了解一下详细内容。

上一篇 下一篇

猜你喜欢

热点阅读