web-dev-qa-db-ja.com

IBDesignableビルドが失敗しました

IBDesignableおよびIBInspectableカスタムクラスを作成して、ビューの影と角の半径を指定しました

しかし、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
            }
        }
    }
}

これは私が得たものです

error

20
VishalPethani

IBInspectableの変数が他の誰かのIBDesignableクラスで使用されているため、失敗しました

次の手順で問題を解決しました。

  1. クラスの名前を変更する
  2. プロジェクトをきれいにします。
  3. ストーリーボードを選択し、[エディター]メニューに移動して[すべてのビューを更新]を実行するか、[自動更新]ビューを選択します。ビルドが完了するのを待ちます。
5
VishalPethani

最初の試行:IBDesignable Build Failed

InterfaceBuilderDesignables: Build Failedにカーソルを合わせたとき、次のようなエラーメッセージが表示されました。

宣言のソースファイルが見つからないか...

だから、XcodeがカスタムUIViewクラスファイルのインデックスを作成できなかったような手がかりとして手に入れたので、Xcodeを終了して再起動し、カスタムSwiftクラスファイルとInterfaceBuilderはそれを適切に見つけることができました。

まず最初に試してから、他のオプションに進みます!

47
Randika Vishman

私の場合、ビューからユーザーインターフェイスに不要になったいくつかのラベルを削除するまで、ストーリーボードでデザイン可能なものは正常に機能していました。

ビルドログにもDiagnosticReportフォルダーにも有用なメッセージはありませんでした。

私にとっての修正は、DerivedDataフォルダー(Xcodeの「リブート」)を削除し、プロジェクトをリビルドすることでした。魔法のように、ストーリーボードには再びカスタムノブが表示されます! :-)

6
WholeCheese

私もこの問題に出くわし、役に立つかもしれない2つの提案があります。

  1. 「Report Navigator」(cmd-9)で「Interface Builder」ビルドログを確認します。これは通常のプロジェクトビルドとは別のビルドです。「Build failed」ではなく、有用なエラーメッセージが表示される場合があります。
  2. Interface Builderのビルドは、シミュレーター、つまりx86_64アーキテクチャーに対して行われます。 iOSの一部(私の場合はMetalなど)がシミュレーターに存在しないため、ビルドが失敗します。少なくともビルドを渡すために、#if targetEnvironment(simulator)ブロック内にいくつかのクラスと関数を定義しました。
4
Jan Misker

私もこれに苦労し、プロジェクトから派生したデータを削除し、Xcodeを再起動してから動作しました。 「選択したビューのデバッグ」は常に無効で、設計可能なビルドは常に失敗として表示されていました。アプリがコンパイルされ、正常に実行されました。

0

CustomClassが参照ファイルとしてプロジェクトに追加されると、これが発生します。たとえば、プロジェクトエクスプローラーで参照フォルダーである青色のフォルダーを確認できます。クラスをプロジェクトにコピーする場合は、「必要に応じてアイテムをコピー」が選択されていることを確認してください。

私の場合、これが問題でした。

0
ak_ninan

最初の2つのステップは私のものを修正しました。 1.クラスをDesignableViewに設定します。 2.モジュールを3に設定します。ビルドをクリーンアップします。 4. Xcodeを再起動します。

0
Anup G Prasad