Xcode 9: 更為嚴(yán)謹(jǐn)?shù)腁utoLayout

在適配過(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的這種情況。

不同環(huán)境的對(duì)比

解決方案

如果你能保證布局的正確性,不修復(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è)置>=widthValue

  • Fixed 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)

約束修復(fù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容