item1.attribute1 = multiplier × item2.attribute2 + constant簡而言之就是進(jìn)行約束的計(jì)算并使用NSLayoutConstraint創(chuàng)建這個(gè)約束,并添加
如下列代碼:

需要注意兩點(diǎn):
一個(gè)是約束添加調(diào)用者需要是父類調(diào)用addConstraint,如果是子類自己添加約束會(huì)報(bào)錯(cuò)
第二需要將子類的translatesAutoresizingMaskIntoConstraints設(shè)置為false,否則會(huì)將AutoresizingMask轉(zhuǎn)成約束進(jìn)而覆蓋或者不可知影響
translatesAutoresizingMaskIntoConstraints:官方說明如圖

需要注意,如果此translatesAutoresizingMaskIntoConstraints屬性設(shè)置為true,則系統(tǒng)根據(jù)view的autoresizing mask創(chuàng)建一系列的約束使得view的UI特性和autoresizing mask制定的一致。這個(gè)屬性不會(huì)和frame等沖突
因?yàn)閍utoresizing mask完全制定了view的size和position,所以一旦引入其他的約束就一定會(huì)沖突,因此如果想動(dòng)態(tài)修改UI,則設(shè)置translatesAutoresizingMaskIntoConstraints為false,然后進(jìn)行約束添加
xib(storyboard一樣,因storyboard知識(shí)xib的大包裝而已)默認(rèn)設(shè)置為false,代碼創(chuàng)建的view則默認(rèn)為true
20180411