toolsVersion="11201" 弄乱了我的故事板

Posted

技术标签:

【中文标题】toolsVersion="11201" 弄乱了我的故事板【英文标题】:toolsVersion="11201" is messing my storyboard 【发布时间】:2016-10-01 19:07:06 【问题描述】:

将我的 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 得出了完全相同的结论(10116 工作正常,11201 搞砸了我的一个表格视图)。似乎是 Xcode 8 的错误 :( 所以我确定了我的问题...我正在根据图像视图的高度设置表格视图的底部 contentInset。出于某种原因,Xcode 8 toolsVersion (11201) 导致该图像视图报告其大小为 1000 x 1000。我需要深入了解图像视图出现问题的原因,但这就是为什么我的 UITableView 太多了“内容。”你的问题可能类似吗? 似乎新的 Xcode 8 toolsVersion (11201) 从情节提要中删除了很多 引用(似乎适用于对其有约束的视图)。因此,如果您在代码中依赖框架,因为它不再存在于情节提要中,框架似乎被报告为 1000 x 1000,直到有机会评估约束。这对你的情况有意义吗?在评估约束之前,您是否依赖于使用约束的框架? (即在 viewDidLoad/viewWillAppear 中,它们还没有被评估) @EthanG 确切地说,感谢您的上述澄清。这正是我所面临的。我通过将所有内容都放在 performSelectorAfterDelay:0 的 viewDidLoad 方法中解决了这个问题。也许这允许评估约束。愚蠢的 Xcode 8 更新!.. 再次感谢您的帮助 【参考方案1】:

这里的问题是,对于 toolsVersion 11201 (Xcode 8),具有完全限定约束的视图似乎不再具有在情节提要中指定的帧(因为约束将在运行时确定帧)。

因此,在评估约束之前,您不能依赖框架(即不要在 viewDidLoad 或 viewWillAppear 中使用框架)。一旦评估了约束,框架似乎就很好了。在评估之前,帧似乎报告为 1000 x 1000(至少,在各种情况下对我来说都是这样)。

因此有两种解决方案:1) 为您的约束提供一个出口并使用它而不是依赖于框架,或 2) 在评估约束后使用框架(例如,在 viewDidAppear 方法中)。

【讨论】:

或使用-viewDidLayoutSubviews,注意它可能会被多次调用

以上是关于toolsVersion="11201" 弄乱了我的故事板的主要内容,如果未能解决你的问题,请参考以下文章

PlatformToolset 和“已删除功能”错误 (C2280)

Visual Studio版本与ToolsVersion与工具集版本号对应版本号

msbuildtoolspath is not specified for the toolsversion xx

在visual studio 2010上编译一个项目时系统报错,提示了问题补充的错误信息。 这样的问题怎么解决?

linux平台的oracle11201借用expdp定时备份数据库-1225

如何将VS2015工程转换成VS2012工程