自动布局中的视觉格式字符串语法

Posted

技术标签:

【中文标题】自动布局中的视觉格式字符串语法【英文标题】:Visual Format String Grammar in auto layout 【发布时间】:2013-10-30 04:09:00 【问题描述】:

我想学习自动布局,看到这个official document。在视觉格式字符串语法一章,我不懂替换规则。什么是“?”而“*”是什么意思?

【问题讨论】:

这些是正则表达式规则。 * 表示 0 或更多,而 ?表示 0 或 1。使用语法时不需要它,它只是展示如何格式化 VFL 字符串。 同意,语法不是很重要。请看一些例子。 【参考方案1】:

语法的定义以EBNF的形式给出,在计算机科学中用于描述context-free grammars。

具体来说,

? 表示可选性,意思是 0 或 1 次重复 * 表示 0 次或多次重复 |表示另一种选择

例如

(<predicate>(,<predicate>)*)

表示&lt;predicate&gt;,后跟任意数量的,&lt;predicate&gt;,可能为0。

[<viewName>(<predicateListWithParens>)?]

表示[&lt;viewName&gt;&lt;predicateListWithParens&gt;] 或仅表示[&lt;viewName&gt;]

终于

H|V

表示HV

【讨论】:

非常感谢。我明白了。

以上是关于自动布局中的视觉格式字符串语法的主要内容,如果未能解决你的问题,请参考以下文章

ios自动布局视觉格式-对齐

使用视觉格式化语言在代码中自动布局 UIViewController

ios自动布局视觉格式设置子视图与父视图大小相同,但垂直偏移

iOS中的自动布局问题

自动布局水平和垂直格式一起

自动布局:layoutMarginsGuide