相关疑难解决方法(0)

即使在指定 Bundle 时,在 IBDesignable 视图中使用资产目录中的命名颜色也会使 IB 崩溃

当引用使用UIColor(named:)Interface Builder创建的颜色时,由于颜色为 nil,它会崩溃。

最初我认为这是因为 IB 在错误的包中寻找颜色,但在指定要在 IB 中查找的包后仍然找不到颜色。

这在设备/模拟器上运行时运行良好。

extension UIColor {

    // MARK: - Oranges
    static let tangerine = UIColor(named: "Tangerine", in: Bundle(for: AppDelegate.self), compatibleWith: nil)!
    .....
}
Run Code Online (Sandbox Code Playgroud)

再深入研究一下,IB 所查看的 Bundle 似乎包含对颜色和图像的引用,因此您希望它能够工作..?

po Bundle(for: AppDelegate.self)
NSBundle </Users/me/Library/Developer/Xcode/DerivedData/MyApp-ddspmruccrhrxhbawgwawhzkrrts/Build/Intermediates.noindex/IBDesignables/Products/Debug - DEV-iphonesimulator/MyApp.app> (loaded)`
Run Code Online (Sandbox Code Playgroud)

xcrun --sdk iphoneos assetutil --info pathToAsserts.car

  {
"AssetType" : "Color",
"Color components" : [
  1,
  1,
  1,
  1
],
"Colorspace" : "srgb",
"Idiom" : "universal",
"Name" : "Marmalade",
"Scale" : 1
},
{
"AssetType" : "Image",
"BitsPerComponent" …
Run Code Online (Sandbox Code Playgroud)

interface-builder uicolor ios swift ibdesignable

6
推荐指数
1
解决办法
1546
查看次数

标签 统计

ibdesignable ×1

interface-builder ×1

ios ×1

swift ×1

uicolor ×1