26

我已经创建IBDesignableIBInspectable自定义类来为视图提供阴影和角半径

但是当我将Designable课程分配给时view,我得到 Designable Build Failed

这是我的代码

import Foundation

import UIKit

@IBDesignable
class DesignableView: UIView {
}

@IBDesignable
class DesignableButton: UIButton {
}

@IBDesignable
class DesignableLabel: UILabel {
}

@IBDesignable
class DesignableTableView: UITableView {

}

extension UIView {

    @IBInspectable
    var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
        }
    }

    @IBInspectable
    var borderWidth: CGFloat {
        get {
            return layer.borderWidth
        }
        set {
            layer.borderWidth = newValue
        }
    }

    @IBInspectable
    var borderColor: UIColor? {
        get {
            if let color = layer.borderColor {
                return UIColor(cgColor: color)
            }
            return nil
        }
        set {
            if let color = newValue {
                layer.borderColor = color.cgColor
            } else {
                layer.borderColor = nil
            }
        }
    }

    @IBInspectable
    var shadowRadius: CGFloat {
        get {
            return layer.shadowRadius
        }
        set {
            layer.shadowRadius = newValue
        }
    }

    @IBInspectable
    var shadowOpacity: Float {
        get {
            return layer.shadowOpacity
        }
        set {
            layer.shadowOpacity = newValue
        }
    }

    @IBInspectable
    var shadowOffset: CGSize {
        get {
            return layer.shadowOffset
        }
        set {
            layer.shadowOffset = newValue
        }
    }

    @IBInspectable
    var shadowColor: UIColor? {
        get {
            if let color = layer.shadowColor {
                return UIColor(cgColor: color)
            }
            return nil
        }
        set {
            if let color = newValue {
                layer.shadowColor = color.cgColor
            } else {
                layer.shadowColor = nil
            }
        }
    }
}

这就是我得到的

错误

4

8 回答 8

51

第一次尝试:IBDesignable 构建失败

对我来说,当我将鼠标悬停在 上时InterfaceBuilder Designables: Build Failed,它会给出一条错误消息,内容类似于

找不到声明的任何源文件或...

所以,我得到了一个线索,比如 Xcode 无法索引我的自定义UIView类文件,所以我所做的就是退出 Xcode 并重新启动它,然后它索引了我的自定义 Swift 类文件,并且 InterfaceBuilder 能够正确找到它。

首先尝试一下,然后转到其他选项!

于 2018-06-27T18:21:39.020 回答
9

它失败了,因为变量IBInspectable在别人的IBDesignable班级中使用

以下步骤解决了该问题:

  1. 重命名类
  2. 清理项目。
  3. 选择故事板,进入编辑器菜单并刷新所有视图或选择自动刷新视图;等待构建完成。
于 2017-12-22T10:34:42.227 回答
7

在我的例子中,设计对象在我的故事板中运行良好,直到我删除了视图中的一些标签,这些标签不再是我的用户界面所必需的。

构建日志或 DiagnosticReport 文件夹中没有有用的消息。

对我来说,解决方法是删除 DerivedData 文件夹(Xcode“重新启动”)并重建项目。神奇的是,故事板再次显示了我的自定义旋钮!:-)

于 2018-03-17T01:08:21.453 回答
7

我也偶然发现了这个问题,并有两个可能有用的建议:

  1. 在“Report Navigator”(cmd-9)中检查“Interface Builder”构建日志,它是与您的正常项目构建不同的构建,那里可能会有有用的错误消息,而不仅仅是“构建失败”。
  2. Interface Builder 构建是为模拟器完成的,即 x86_64 架构。模拟器上不存在 iOS 的某些部分(例如我的 Metal),导致构建失败。我在块内定义了一些类和函数#if targetEnvironment(simulator),以至少通过构建。
于 2018-07-14T14:27:53.530 回答
0

我也为此苦苦挣扎,然后删除了项目派生数据并重新启动了 Xcode,然后它才能再次工作。“调试选定视图”始终被禁用,可设计的构建始终显示为失败。应用程序编译并运行良好。

于 2018-06-18T01:03:03.237 回答
0

如果您的 CustomClass 作为参考文件添加到项目中,则会发生这种情况。例如,您可以在 Project Explorer 中看到蓝色文件夹,即参考文件夹。如果您要将类复制到我们的项目中,请确保选中“如果需要,复制项目”。

就我而言,这就是问题所在。

于 2018-08-22T12:27:03.347 回答
0

即使前两个步骤固定了我的。1. 将类设置为 DesignableView。2. 将模块设置为 3. 清理构建。4. 重启 Xcode。

于 2018-10-01T06:31:54.393 回答
0

确保您已在 Project settings -> Signing and Capabilities 选项卡中输入您的开发团队。没有开发团队就不能使用@IBDesignable。但是,使用您的个人团队就足够了 - 只需要 AppleID。

于 2021-05-25T18:30:33.933 回答