在适配过程中,使用Xcode9为IB中View正确的添加约束会出现警告。
例子:
在例子中我只为SmallBtn添加了位置约束,尺寸约束由Intrinsic Content Size(自身内容)来决定,在Xcode8上是没有问题的,但是在Xcode9上面就会提示有警告。
分析
在上述的例子中,Xcode9给了我们一个Trailing constraint is missing,which may cause overlapping with other views
的警告。这种警告就是Localization Issue
产生的原因是因为在Xcode9中会去考虑本地化、IB多语言的情况。由于语言字符的宽高不同导致像Button、Label等这种依靠自身内容来获取尺寸的控件在不同语言环境下尺寸也会发生改变,这样就可能会造成遮挡住其他的View的这种情况。
解决方案
如果你能保证布局的正确性,不修复这类警告也不会造成很大的影响。不过看着警告总归是不舒服的,可以动手修复一下。下面举几个 Localization Issue 的警告和对应修复的例子。
Trailing constraint is missing,which may cause overlapping with other views
的警告:需要多加一条约束左或右间距约束。这里是给smallBtn多添加一条右边的约束,smallBtn.Trailing <= RinghtView.Leading
(这样就确定了smallBtn最大宽度,就解决了上述的情况了)Fixed width constraints may cause clipping
的警告:对该宽度约束设置>=widthValue
Fixed leading and traliling constraints with a center constraint may cause clipping.
的警告:如果在修复完宽度约束之后有这样的警告,可以去掉左或右某一边约束,使该View的宽度与SmallBtn的宽度相等就可以了
最后
实际上Xcode的警告都会自动给出解决方案来, 大家可以根据自己项目的实际情况来决定添加什么约束 ,这样解决起来会更加方便一点