使用Autoresizing Mask布局时,如何消除无布局约束警告?
我收到了如下警告:
Views without any layout constraints may clip their content or overlap other views.
但我正在使用Autoresizing Mask,理论上无需使用布局约束,是否存在遗漏的设置?切换至不同视图尺寸时,所有功能运行正常。


这种情况大多是Xcode的布局检测逻辑误判,或是项目里的相关设置冲突导致的,按下面步骤排查即可:
检查
translatesAutoresizingMaskIntoConstraints属性:Autoresizing Mask能生效的前提是这个属性为true(默认值),如果代码里手动把它设为false,Autoresizing Mask就会失效,Xcode也会抛出约束缺失警告。如果是Storyboard/XIB创建的视图,确认属性面板里没有改动过这个设置。关闭不必要的布局检查:如果已经确认Autoresizing Mask设置正确且功能正常,只是警告干扰操作,可以通过
Editor > Canvas > Show Layout Issues关闭布局问题提示,或者在项目Build Settings里搜索Layout Validation,调低相关校验等级。统一父视图布局方式:如果父视图用了Auto Layout约束,子视图用Autoresizing Mask,Xcode可能会误判。要么把父视图也改成用Autoresizing Mask,要么确保父视图的约束足够稳定,不会影响子视图的自适应逻辑。
清理项目缓存:Xcode缓存偶尔会导致错误警告,执行
Product > Clean Build Folder,然后重启Xcode,警告大概率会消失。
内容的提问来源于stack exchange,提问作者Zack Cheang Weng Seong

