(八十八)VFL語言初步 實現布局

2021-09-08 13:05:40 字數 1850 閱讀 3150

【基本的語法】

vfl的語法為h:和v:開頭。代表水平和垂直。

接下來假設要涉及距離。使用|-x-,x為距離的點數。

對於檢視。用[ ]包圍,比如[blueview]。

①以下的語句實現了blueview水平方向左右各距離控制器的邊緣20點:

h:|-20-[blueview]-20|

②假設要指定寬高,在檢視名稱之後用圓括號內填入常量數值,以下的**實現了blueview距離左邊20點,寬度固定為120點:

h:|-20-[blueview(20)]

③假設要指定相等關係,比如redview的寬度和blueview相等,則在開頭為h:的條件下寫[redview(==blueview)]。

④假設出現乘除計算,不能使用vfl,這時候應該使用nslayoutconstraint的constraintwithitem:::::方法,計算公式為firstitem.x = (seconditem.x + constant) * multiplier,x為attribute指定的計算量。注意這個約束應該被加入到他們公共的父節點上。

【實現方法】

使用constraintswithvisualformat::::方法:

/**

format: vfl語句

options:對齊方式

metrics:vfl用到的變數

views:vfl用到的檢視

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

①假設不須要對齊,options填入0。

②views為在vfl中相應實際view的根據,比如@,當vfl**現redview時。系統會通過views字典查詢到self.redview,從而實現改動self.redview的尺寸。

③metrics為vfl中使用的變數。對於多次出現的值。能夠用乙個變數取代,然後在metrics中指定變數的值。

【例項】

以下的**實現了blueview距離控制器view邊緣左、中、右各20點,redview在blueview下20點,右對齊。寬度為blueview的一半。

須要注意的是禁用autoresizing。

- (void)viewdidload ];

[self.view addconstraints:blueviewhori];

nsarray *blueredverti = [nslayoutconstraint constraintswithvisualformat:@"v:|-20-[blueview(50)]-20-[redview(==blueview)]" options:nslayoutformatalignallright metrics:nil views:@];

[self.view addconstraints:blueredverti];

nslayoutconstraint *redviewwidthconstraint = [nslayoutconstraint constraintwithitem:redview attribute:nslayoutattributewidth relatedby:nslayoutrelationequal toitem:blueview attribute:nslayoutattributewidth multiplier:0.5 constant:0];

[self.view addconstraint:redviewwidthconstraint];

}

愛情八十八課,對抗消磨

消磨,就是兩個人的愛情,只剩下一起打哈欠。雖然蕭伯納說 正因為需要個人一起打哈欠,所以才選擇愛情。但卻很少有人能抵達老蕭同志的境界,大部分人在 相看兩相厭 的時刻,就會提出分手。真的,所有愛情都會發展到 消磨 階段,當這個質變來臨時,只有兩條路 要麼結婚 要麼分手。決無其他。不認為 一起打哈欠 是長...

第八十八周學習生活總結

今天是2021年1月16日,上週一回家,這算是在家的第一周了。春招告急 漸行漸遠 去年疫情來學校之前,我們家後面有個和我一般大的男生結婚了,前幾天聽我夥計說還有十幾天我們就要去他們家喝滿月酒了。想想我自己,我連學還沒上完,現在還坐在屋子裡碼字,和我同一年出生的同學就已經在哄孩子了,果真人生都是在漸行...

德魯克日誌讀後感之八十八

quote b 三月三十一日 從分析到感知 在生態學中,觀察與理解的物件是 整體 而 部分 只存在於對整體的觀察之中。b 在數學家和哲學家所構建的世界中,感知是一種直覺。它帶有欺騙性,或是玄妙 難以捉摸而且神秘的。然而,機械世界觀認為感知並非是嚴密的,它只能歸屬於 生活中更美好的事物 我們沒有這些事...