在適配過(guò)程中,使用Xcode9為IB中View正確的添加約束會(huì)出現(xiàn)警告
例子:
在例子中我只為SmallBtn添加了位置約束,尺寸約束由Intrinsic Content Size(自身內(nèi)容)來(lái)決定,在Xcode8上是沒(méi)有問(wèn)題的,但是在Xcode9上面就會(huì)提示有警告。

分析
在上述的例子中,Xcode9給了我們一個(gè)Trailing constraint is missing,which may cause overlapping with other views的警告。這種警告就是Localization Issue

產(chǎn)生的原因是因?yàn)樵赬code9中會(huì)去考慮本地化、IB多語(yǔ)言的情況。由于語(yǔ)言字符的寬高不同導(dǎo)致像Button、Label等這種依靠自身內(nèi)容來(lái)獲取尺寸的控件在不同語(yǔ)言環(huán)境下尺寸也會(huì)發(fā)生改變,這樣就可能會(huì)造成遮擋住其他的View的這種情況。

解決方案
如果你能保證布局的正確性,不修復(fù)這類(lèi)警告也不會(huì)造成很大的影響。不過(guò)看著警告總歸是不舒服的,可以動(dòng)手修復(fù)一下。下面舉幾個(gè)Localization Issue的警告和對(duì)應(yīng)修復(fù)的例子。
Trailing constraint is missing,which may cause overlapping with other views的警告:需要多加一條約束左或右間距約束。這里是給smallBtn多添加一條右邊的約束,smallBtn.Trailing <= RinghtView.Leading(這樣就確定了smallBtn最大寬度,就解決了上述的情況了)Fixed width constraints may cause clipping的警告:對(duì)該寬度約束設(shè)置>=widthValueFixed leading and traliling constraints with a center constraint may cause clipping.的警告:如果在修復(fù)完寬度約束之后有這樣的警告,可以去掉左或右某一邊約束,使該View的寬度與SmallBtn的寬度相等就可以了
最后
實(shí)際上Xcode的警告都會(huì)自動(dòng)給出解決方案來(lái),大家可以根據(jù)自己項(xiàng)目的實(shí)際情況來(lái)決定添加什么約束,這樣解決起來(lái)會(huì)更加方便一點(diǎn)
