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
}
}
}
}
これは私が得たものです
IBInspectable
の変数が他の誰かのIBDesignable
クラスで使用されているため、失敗しました
次の手順で問題を解決しました。
InterfaceBuilder
Designables: Build Failed
にカーソルを合わせたとき、次のようなエラーメッセージが表示されました。
宣言のソースファイルが見つからないか...
だから、XcodeがカスタムUIView
クラスファイルのインデックスを作成できなかったような手がかりとして手に入れたので、Xcodeを終了して再起動し、カスタムSwiftクラスファイルとInterfaceBuilderはそれを適切に見つけることができました。
まず最初に試してから、他のオプションに進みます!
私の場合、ビューからユーザーインターフェイスに不要になったいくつかのラベルを削除するまで、ストーリーボードでデザイン可能なものは正常に機能していました。
ビルドログにもDiagnosticReportフォルダーにも有用なメッセージはありませんでした。
私にとっての修正は、DerivedDataフォルダー(Xcodeの「リブート」)を削除し、プロジェクトをリビルドすることでした。魔法のように、ストーリーボードには再びカスタムノブが表示されます! :-)
私もこの問題に出くわし、役に立つかもしれない2つの提案があります。
#if targetEnvironment(simulator)
ブロック内にいくつかのクラスと関数を定義しました。私もこれに苦労し、プロジェクトから派生したデータを削除し、Xcodeを再起動してから動作しました。 「選択したビューのデバッグ」は常に無効で、設計可能なビルドは常に失敗として表示されていました。アプリがコンパイルされ、正常に実行されました。
CustomClassが参照ファイルとしてプロジェクトに追加されると、これが発生します。たとえば、プロジェクトエクスプローラーで参照フォルダーである青色のフォルダーを確認できます。クラスをプロジェクトにコピーする場合は、「必要に応じてアイテムをコピー」が選択されていることを確認してください。
私の場合、これが問題でした。
最初の2つのステップは私のものを修正しました。 1.クラスをDesignableViewに設定します。 2.モジュールを3に設定します。ビルドをクリーンアップします。 4. Xcodeを再起動します。