方法
GtkConstraintLayoutadd_constraints_from_descriptionv
声明 [src]
GList*
gtk_constraint_layout_add_constraints_from_descriptionv (
GtkConstraintLayout* layout,
const char* const* lines,
gsize n_lines,
int hspacing,
int vspacing,
GHashTable* views,
GError** error
)
描述 [src]
从 VFL 描述中创建约束列表。
视觉格式语言(Visual Format Language,VFL)基于 Apple 的 AutoLayout VFL。
使用 views
字典将 GtkConstraintTarget
实例匹配到 VFL 内部的符号视图名称。
VFL 语法
<visualFormatString> = (<orientation>)?
(<superview><connection>)?
<view>(<connection><view>)*
(<connection><superview>)?
<orientation> = 'H' | 'V'
<superview> = '|'
<connection> = '' | '-' <predicateList> '-' | '-'
<predicateList> = <simplePredicate> | <predicateListWithParens>
<simplePredicate> = <metricName> | <positiveNumber>
<predicateListWithParens> = '(' <predicate> (',' <predicate>)* ')'
<predicate> = (<relation>)? <objectOfPredicate> (<operatorList>)? ('@' <priority>)?
<relation> = '==' | '<=' | '>='
<objectOfPredicate> = <constant> | <viewName> | ('.' <attributeName>)?
<priority> = <positiveNumber> | 'required' | 'strong' | 'medium' | 'weak'
<constant> = <number>
<operatorList> = (<multiplyOperator>)? (<addOperator>)?
<multiplyOperator> = [ '*' | '/' ] <positiveNumber>
<addOperator> = [ '+' | '-' ] <positiveNumber>
<viewName> = [A-Za-z_]([A-Za-z0-9_]*) // A C identifier
<metricName> = [A-Za-z_]([A-Za-z0-9_]*) // A C identifier
<attributeName> = 'top' | 'bottom' | 'left' | 'right' | 'width' | 'height' |
'start' | 'end' | 'centerX' | 'centerY' | 'baseline'
<positiveNumber> // A positive real number parseable by g_ascii_strtod()
<number> // A real number parseable by g_ascii_strtod()
注意:GTK使用的VFL语法与Apple定义的略有不同,因为它可以使用约束强度的符号值而不是数值;此外,GTK允许在谓词中添加简单的算术运算。
VFL 描述示例
// Default spacing
[button]-[textField]
// Width constraint
[button(>=50)]
// Connection to super view
|-50-[purpleBox]-50-|
// Vertical layout
V:[topField]-10-[bottomField]
// Flush views
[maroonView][blueView]
// Priority
[button(100@strong)]
// Equal widths
[button1(==button2)]
// Multiple predicates
[flexibleButton(>=70,<=100)]
// A complete line of layout
|-[find]-[findNext]-[findField(>=20)]-|
// Operators
[button1(button2 / 3 + 50)]
// Named attributes
[button1(==button2.height)]
该方法在语言绑定中被重命名为 gtk_constraint_layout_add_constraints_from_description()
。
参数
lines
-
类型:
char*
数组定义一组约束的视觉格式语言(Visual Format Language,VFL)行数组。
数组的长度由《n_lines》参数指定。 方法调用者拥有数据。 每个元素都是终止于 NUL 的 UTF-8 字符串。 n_lines
-
类型:
gsize
行的数量。
hspacing
-
类型:
int
默认水平间距值,或-1使用回退值。
vspacing
-
类型:
int
默认垂直间距值,或-1使用回退值。
views
-
类型:
GHashTable
一个 [ name, target ] 对的字典;
name
键映射到《VFL》行中的视图名称,而target
值映射到使用《GtkConstraintLayout》的子项或指示符。方法调用者拥有数据。 error
-
类型:
GError **
可恢复错误的返回位置。
该参数可以为 NULL
。如果返回位置不是 NULL
,则您必须将其初始化为一个NULL
GError*
。如果没有错误,则该方法会将参数初始化为 NULL
。发生错误时,参数将设置为一个新分配的 GError
;调用者将拥有这些数据,并负责释放它。
返回值
类型: 一个包含 GtkConstraint*
的列表
被添加到布局的 GtkConstraint
实例的列表。
方法调用者将拥有返回的数据容器,但不拥有其中的数据。 |