将我的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"
时,一切正常。
如何将工具版本强制为某个值?什么是这个属性以及为什么它会弄乱我的约束和框架。
感谢有关此问题的任何信息。
答案 0 :(得分:1)
这里的问题是,使用toolsVersion 11201(Xcode 8),似乎具有完全限定约束的视图不再具有在故事板中指定的帧(因为约束将在运行时确定帧)。
因此,在评估约束之前,您不能依赖于框架(即不要在viewDidLoad或viewWillAppear中使用框架)。一旦评估了约束,框架就好了。在对它们进行评估之前,框架似乎报告为1000 x 1000(至少,在各种情况下,这对我来说是什么样的)。
因此有两种解决方案:1)对约束进行出口并使用它而不是依赖于框架,或2)在评估约束后使用框架(例如,在viewDidAppear方法中)。