iOS學習之VFL語言簡介

2021-09-07 10:13:11 字數 2265 閱讀 1799

vfl(visual format language),「視覺化格式語言」。

vfl是蘋果公司為了簡化autolayout的編碼而推出的抽象語言。

cancelbutton寬72,acceptbutton寬50,它們之間間距12

h:[wideview(>=60@700)]

wideview寬度大於等於60point,該約束條件優先順序為700(優先順序最大值為1000,優先順序越高的約束條件越先被滿足)

v:[redbox][yellowbox(==redbox)]

垂直方向上,先有乙個redbox,其下方緊接乙個高度等於redbox高度的yellowbox

h:|-10-[find]-[findnext]-[findfield(>=20)]-|

水平方向上,find距離父view左邊緣間隔10,之後是findnext距離find間隔預設寬度;再之後是寬度不小於20的findfield,它和findnext以及父view右邊邊緣的間距都是預設寬度。(豎線「|」表示superview的邊緣)。

使用vfl來建立約束陣列

+(nsarray *)constraintswithvisualformat:(nsstring *)format options:(nslayoutformatoptions)opts metrics:(nsdictionary *)metrics views:(nsdictionary *)views;

format:vfl語句

opts:約束型別

metrics:vfl語句中用到的具體數值

views:vfl語句中用到的控制項

建立乙個字典(內部包含vfl語句中用到的控制項)的快捷巨集定義

nsdictionaryofvariablebindings(...)

效果圖如下:

實現**:

-(void)horizontallayout];

[self.view addconstraints:hcons];

垂直方向的約束

nsstring *vvfl = @"v:[blueview(50)]-30-|";

nsarray *vcons = [nslayoutconstraint constraintswithvisualformat:vvfl options:0 metrics:nil views:@];

[self.view addconstraints:vcons];

}-(void)verticallayout];

[self.view addconstraints:hcons];

垂直方向的約束

nsstring *vvfl = @"v:|-30-[blueview(50)]-30-[redview(==blueview)]";

nsarray *vcons = [nslayoutconstraint constraintswithvisualformat:vvfl options:nslayoutformatalignallright metrics:nil views:@];

[self.view addconstraints:vcons];

nslayoutconstraint *redleftcon = [nslayoutconstraint constraintwithitem:redview attribute:nslayoutattributeleft relatedby:nslayoutrelationequal toitem:blueview attribute:nslayoutattributecenterx multiplier:1.0 constant:0];

[self.view addconstraint:redleftcon];

}

最後對格式的字串作乙個總結介紹:

功能表示式

水平方向

h:垂直方向

v:views

[view]

superview|關係

>=,==,<=

空間,間隙

-優先順序

@value

iOS學習之VFL語言簡介

vfl visual format language 視覺化格式語言 vfl是蘋果公司為了簡化autolayout的編碼而推出的抽象語言。cancelbutton寬72,acceptbutton寬50,它們之間間距12 h wideview 60 700 wideview寬度大於等於60point,...

iOS開發 螢幕適配之VFL語言

1 簡介 vfl語言是蘋果給了簡化螢幕適配的工作量推出的一門語言,以不同的方向進行新增約束的 vfl比純 更加的巨集觀,它在新增約束的同時考慮不同控制項之間的關係,純 是每個控制項單獨新增約束 2 核心 v 垂直方向 h 水平方向 控制項之間的間距 如 20 代表間距為20 具體控制項 如 view...

IOS開發之自動布局 VFL語言

前言 vfl是蘋果公司為了簡化autolayout的編碼而推出的抽象語言。對於純 發燒友,值得我們去學習和了解哦。1 什麼是vfl語言 vfl全稱是visual format language,翻譯過來是 視覺化格式語言 2 vfl使用示例 h cancelbutton 72 12 acceptbu...