全稱是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.陣列的初始化 定義 在建立陣列的...