故事板 UICollectionViewCell 出现,然后变为空白

Storyboard UICollectionViewCell shows up, then goes blank

问题:

我正在我的 Storyboard/Interface Builder 上开发一个 UIViewController,其中有一个 UICollectionView 定义了一个 UICollectionViewCell。每次我更改此单元格中的某些内容时,其所有子视图都会变为空白,无法看到任何内容。此外,当我更新约束时,即使我刷新,框架也不会移动,就像整个界面构建器都坏了一样。只针对这个 UIViewController,有时对另一个也会这样。 Interface Builder 构建显示来自 Pods 的警告(我无能为力)。我没有打破限制。

(非常)临时解决方案:

如果我退出 Xcode,清理、重建并重新打开情节提要,它将恢复到“几乎”正常状态(意味着并非所有视图都正确显示,但至少我可以看到它们,但事实并非如此全白),直到我切换到另一个文件并返回。当我回到故事板时,又会一片空白。有时我必须删除我的 DerivedData,单元格才能完美显示。只有几分钟。

此外,我没有任何约束警告或任何东西。

编辑:我从单元格中的所有视图中删除了所有 classes,以防我的自定义视图中的某些内容导致这些问题。我的视图主要实现图层和渐变,所以我认为我可能做错了什么破坏了 IB 渲染。在单元格的顶部有一个我制作的自定义 UIView,它使用 CAGradientLayer。如果我从此视图中删除 class,该单元格将再次开始显示。但我不能确定这是原因,因为当我离开故事板并返回时,单元格将再次变白。无需将 class 放回原位。

EDIT2:我卸载并重新安装了 Xcode 和 cocoapods。更新了 pods。创建了一个新的 xcworspace。

截图

关于我的环境的详细信息

我正在使用 Swift、XCode 9.3、Cocoapods 1.5.0、High Sierre 10.13.4 随时询问任何其他细节 我的 Pods(由于 swift 4 兼容性而生成大量警告):

  pod 'FBSDKLoginKit'
  pod 'FBSDKCoreKit'
  pod 'FSPagerView'
  pod 'CropViewController'
  pod 'SwiftLint'
  pod 'Parse'
  pod 'Parse/FacebookUtils'
  pod 'ImagePicker'
  pod 'XLPagerTabStrip', '~> 8.0'
  pod 'Eureka'

您应该在 awakeFromNib 方法中调用超级父级。

You must call the super implementation of awakeFromNib to give parent classes the opportunity to perform any additional initialization they require.

override func awakeFromNib() {
  super.awakeFromNib()
  setup()
}

可以成为您的依赖项之一,查看关于这些 dependenciesissues

尝试一一删除您的依赖项。

问题是由 Cocoapods 和 Xcode.

引起的

首先,通过在另一台机器上克隆我的项目,我意识到我的 Xcode 没有显示 Interface Builder 错误,而只显示警告。

如何显示 Interface Builder 错误?

在 Xcode 的左窗格(具有文件层次结构的窗格)中,单击看起来像漫画气泡的最后一项。您将看到构建、工作区和界面构建器错误。我的 Xcode 由于某种原因无法显示任何内容,因此我第二次重新安装 Xcode。

如何正确重新安装 Xcode ?

只需删除所有这些文件:

/Applications/Xcode.app
/Library/Preferences/com.apple.dt.Xcode.plist
~/Library/Preferences/com.apple.dt.Xcode.plist
~/Library/Caches/com.apple.dt.Xcode
~/Library/Application Support/Xcode
~/Library/Developer
~/Library/Developer/Xcode
~/Library/Developer/CoreSimulator

来源:如何完全卸载 Xcode 并清除所有设置

然后,Xcode 向我展示了这个错误:

最后,我可以确认删除与此框架相关的 pod 将不会破坏我的故事板。 通过在互联网上查看更多,我发现这是一个与框架签名相关的实际问题,由 cocoa pods.

引起

我卸载了 Cocoapods 1.5.0 并重新安装了 1.4.0 版本。

sudo gem uninstall cocoapods
sudo gem install cocoapods -v 1.4.0

来源:Xcode - @IBDesignables - Required code signing missing for X.framework

所有问题都已解决。