VFL歸納整理

2021-07-09 06:35:56 字數 2456 閱讀 3912

全稱是visual format language,翻譯過來是「視覺化格式語言

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

事例:

h:[cancelbutton(72)]-12-[acceptbutton(50)]

canelbutton寬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左邊緣預設間隔寬度,之後是findnext距離find間隔預設寬度;再之後是寬度不小於20的findfield,它和findnext以及父view右邊緣的間距都是預設寬度。(豎線「|」 表示superview的邊緣)

1)」|」表示superview.

|-間距-[view1物件名]-(>=20)-[view2物件名]

不寫h/v就表示橫向,間距可以寫固定值也可寫》/<。

形象化的理解,"|"是用來確定view上、下、左、右關係的。

想要確定從上到下的關係,就加v:|。那麼這個vfl字串就可以描述從上到下的view們的關係。

2)看到vfl3裡面,方括號表示view,圓括號表示尺寸數值。支援大小等於。或者另乙個view |-[view1(view2)],v1的寬度等於v2。

3)優先順序用@表示。如v:|-50@750-[view(55)],或者寫到metrics裡面更好。

具體定義檢視uilayoutpriority。有幾個固定的數值。1000表示必須支援。
4)options,這個要看具體需要。如果是豎排v布局,可以新增nslayoutformatalignallleft,讓他們對齊。

根據需要也可以新增按位或nslayoutformatalignallleft | nslayoutformatalignallright。(鬼知道什麼需要,自己看經驗吧)
5)寫好以後一般把constraint新增給superview:

nsstring *vfl1 = @"|-hpadding-[_headerl]-hpadding-|";   

[self

.view addconstraints:[nslayoutconstraint constraintswithvisualformat:vfl1 options:0 metrics:metrics views:dict1]];

6)還有乙個api用於生成單個constant

+(id)constraintwithitem

:(id)view1

attribute

:(nslayoutattribute)attr1

relatedby

:(nslayoutrelation)relation

toitem

:(id)view2

attribute

:(nslayoutattribute)attr2

multiplier

:(cgfloat)multiplier

constant

:(cgfloat)c;

對於引數,記得,view1.attr1 = view2.attr2 * multiplier + constant就好。

這個是不用vfl的,好理解,但是不方便。如果用這個寫。工作兩不會比傳統布局少多少。

引數總結及vfl的使用

使用vfl來建立約束陣列

+ (nsarray *)constraintswithvisualformat

:(nsstring *)format

options

:(nslayoutformatoptions)opts

metrics

:(nsdictionary *)metrics

views

:(nsdictionary *)views;

format :vfl語句

opts :約束型別(一般可以傳0)

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

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

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

nsdictionaryofvariablebindings(…)

Python 基礎歸納整理

可以單獨定義變數 a 62 b 48可以多個變數賦值 a b 123 a,b,c 1,2,3 a,b b,a可以單行注釋 這排是一行注釋 這排又是一行注釋 a 62 這是注釋 b 48也可以多行注釋 這幾排 都是注釋 這也是多排注釋 這也是多排注釋 這也是多排注釋 python 沒有begin en...

設計模式歸納整理

1 前言 類,方法 是一種抽象等級 組織等級,復用等級,即 我們用類來組織我們的 對應業務模型,解決業務問題.類和方法 可以理解為 目錄和檔案的關係,目錄只管組織,具體內容在檔案中,檔案包括裡面的內容,但不是 設計模式是老手針對 組織的經驗,它不能幫你實現任何功能,但功能必須依賴於組織,就像檔案必須...

陣列知識整理歸納

陣列的建立 type t arr name const n type t 是指數組的元素型別 const n 是個常量表示式,來指定陣列的大小 其中 const n 中const n必須是常量,不能像下面這樣 int count 10 int arr count 2.陣列的初始化 定義 在建立陣列的...