将我的xCode更新为8.0并在设备上运行我的应用程序后,我注意到情节提要中的收藏视图被弄乱了,并且框架不再适合该视图。
仅当我打开情节提要时才会发生这种情况(似乎我第一次在xcode中打开文件后,xcode会添加一些属性)。
当我用旧的替换故事板,然后在不打开应用程序的情况下构建应用程序,一切都按预期工作。
经过数小时的搜索(可能是原因)并比较了情节提要的源代码(在打开后,旧情节和新情节之间),我发现原因是在情节提要源代码顶部找到了toolsVersion属性。
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0"
toolsVersion="11201" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch"
propertyAccessControl="none" useAutolayout="YES" colorMatched="YES"
initialViewController="wZn-Em-z41">
当我替换
toolsVersion="11201" with toolsVersion="10116"
时,一切都会再次正常运行。如何强制工具版本达到一个值?以及此属性是什么以及为什么它弄乱了我的约束和框架。
感谢有关此问题的任何信息。
最佳答案
这里的问题是,使用toolsVersion 11201(Xcode 8),似乎具有完全限定约束的视图不再在情节提要中指定框架(因为约束将在运行时确定框架)。
因此,在评估约束之前,您不能依赖框架(即,不要在viewDidLoad或viewWillAppear中使用框架)。评估了约束之后,框架似乎很好。在对其进行评估之前,该帧似乎被报告为1000 x 1000(至少,在各种情况下,这对我来说就是这样)。
因此,有两种解决方案:1)为约束创建一个出口,并使用它代替依赖框架,或者2)在评估了约束之后使用框架(例如,在viewDidAppear方法中)。