82

升级到 Xcode 6.3(发行版)后,现在每次打开包含IB_DESIGNABLE视图的 XIB/Storyboard 文件时 Xcode 都会冻结使用自定义字体对于任何项目并包括自定义字体(不一定要在该 XIB/Storyboard 中引用该字体)。打开 .xib 文件然后尝试切换到任何其他文件后会发生冻结。Xcode 挂起,必须强制退出。

我已经向 Apple 打开了一个错误报告。(错误 20483867)。

现在,我有两个解决方法。

  1. 从 Apple 下载并使用 Xcode 6.2。
  2. 从自定义视图头文件中删除 IB_DESIGNABLE 标记。

这可能是 Apple 的错误,但有没有人有更好的解决方法或解决方案?

4

10 回答 10

29

我已经建议进行编辑以获得更准确的描述

只有当您的项目包含自定义字体时才会发生这种情况。 只需访问包含 IBDesignable 自定义视图的任何 Storyboard/XIB,它就会冻结,甚至不会在 Storyboard/XIB 中引用该字体。

我的解决方法是使用同时安装旧版本的 Xcode(Xcode 6.3 beta 或 Xcode 6.2)并使用它来更新您的 Interface Builder 文件,并且永远不要在 6.3 中打开它。option使用+ shift+click项目树中的文件在Xcode 的新窗口中打开这些 Storyboard/XIB 。

每当您遇到冻结时,我都会使用此命令来清除该项目的已保存状态。

rm -rf YourProject.xcodeproj/project.xcworkspace/xcuserdata

于 2015-04-10T11:04:10.430 回答
26

Xcode 6.3.1 修复了 Storyboard 中自定义字体和IB_DESIGNABLE视图的问题。通过 Mac App Store 更新,你应该会很好。

于 2015-04-21T19:35:59.373 回答
15

Apple 的回应:链接到 Apple 的开发者论坛

谢谢大家的报告。我们正在跟踪这个问题并努力解决它。不幸的是,我们没有很好的解决方法,但这里有两个选项可以帮助您:

如果 Xcode 在启动时挂起,因为之前打开了使用自定义字体/IBDesignable 的故事板/XIB:删除您正在打开的项目的 xcodeproj 中的“UserInterfaceState.xcuserstate”文件,它将位于如下路径:我的应用程序.xcodeproj/project.xcworkspace/xcuserdata/yourusername.xcuserdatad/UserInterfaceState.xcuserstate

如果您确实需要使用 Xcode 6.3 编辑包含自定义字体的故事板/XIB 文件:

  1. 制作故事板/XIB 文件的副本作为备份
  2. 在文本编辑器中打开故事板/XIB 文件
  3. 删除引用自定义字体的名为“fontDescription”的 XML 标记,例如: . 删除此标签会将字体恢复为标准系统字体。
  4. 使用自定义字体创建对象的出口,并在运行时将这些对象的字体设置为您的自定义字体,例如在视图控制器上覆盖 viewDidLoad 或 awakeFromNib

重要提示:我们从不建议手动编辑故事板/XIB 文件。然而,我们认识到这个问题正在阻止你们中的许多人编辑您的文档,并希望提供一种解决方法,但需要注意的是,任何手动编辑都可能导致您的文档损坏。

于 2015-04-14T13:25:45.003 回答
13

对我来说同样的问题。删除 IB_DESIGNABLE 解决了问题.. 回到 6.2 对我不起作用,因为我正在使用 iOS 8.3 的设备上测试应用程序 - Xcode 6.2 无法在使用 iOS 8.3 的设备上运行应用程序 :(

于 2015-04-09T22:19:39.903 回答
3

另一种解决方法是将文件扩展名更改为所有字体文件并从 Info.plist 加载更改后的文件名。这样,您可以保留 IBDesignables 并仍然使用您的自定义字体,但无法在 Interface Builder 的字体选择器中看到它们。

之前从 Interface Builder 设置的所有自定义字体都将继续工作,但为了更改它们或设置其他自定义字体,您必须从代码中执行此操作,或者从文本编辑器中按顺序修改 Storyboard 或 Nib 文件设置字体名称。

于 2015-04-10T13:44:54.507 回答
2

我没有答案,但发现只需强制退出和重新启动就会在完全相同的情况下重新启动 Xcode。为了能够重新启动 Xcode,请删除文件夹~/Library/Saved Application State/com.apple.dt.Xcode.savedState.

于 2015-04-09T17:48:09.230 回答
1

这个错误已在今天发布的 6.4 Xcode 测试版中得到修复。转到开发中心并登录以下载它。

于 2015-04-14T06:47:16.760 回答
1

Xcode 8.1 - 如果你有一个带导航的视图(在我的例子中它是顶部栏不透明导航栏),只需尝试将属性“顶部栏”设置为无。

于 2016-11-29T15:38:50.280 回答
0

作为一种解决方法,我刚刚在我的少数使用它的自定义组件中注释掉了所有 @IBDesignable 标记。当我这样做时,是的,我失去了在 Interface Builder 中调整设置的能力,但它至少允许我打开 .xib 文件而不会导致 XCode 崩溃。

当 Apple 提出修复方案时,我将简单地取消注释那些 @IBDesignable 行。

于 2015-04-16T21:03:07.687 回答
0

@O。Kurnenkov 的回答对我有用。它与 IB_Designable 或自定义字体、Cocoapods 等无关。

由于某种原因,具有“不透明导航栏”会导致nib文件(它似乎不影响storyboards)不断改变y位置;这可以在位置将在 0 到 64 之间闪烁Size Inspector的位置看到y。这在 Xcode 8.2 (8C38) 中发生在我身上。

在此处输入图像描述

我的猜测是,这会导致 Xcode 不断更新布局,从而耗尽资源并导致它挂起/冻结。

在此处输入图像描述

解决方案是使用任何“半透明”选项、推断或无。

希望这可以帮助!

于 2017-02-20T07:02:56.070 回答