Fehler beim Festlegen der benutzerdefinierten Eigenschaft "cornerRadius" (UIView)
Details
War ich gerade das video von Sitzung 411 auf der WWDC 2014die sich auf "Was ist neu auf der Interface Builder", und ich versuchte Sie heraus, wie Sie schaffen Rahmenbedingungen, um @IBDesignable
Klassen, um eine Vorschau meiner änderungen im Storyboard, ohne die Anwendung auszuführen.
@IBInspectable
Eigenschaften werden korrekt angezeigt, wenn ich meine Klasse zu einer bestimmten Ansicht und rendering-Ansicht korrekt mit dem folgenden code:
Code
@IBDesignable
class MyView: UIView {
@IBInspectable var borderColor: UIColor = UIColor.clearColor() {
didSet {
layer.borderColor = borderColor.CGColor
}
}
@IBInspectable var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable var cornerRadius: CGFloat = 0 {
didSet {
layer.cornerRadius = cornerRadius
}
}
@IBInspectable var masksToBounds: Bool = false {
didSet {
layer.masksToBounds = masksToBounds
}
}
}
Log
Bemerkte ich, dass diese Attribute wurden Hinzugefügt, die auf benutzerdefinierte Laufzeit-Attribute (Unter Identity Inspector). Nun was ich erwarte von diesem ist, wenn ich den code ausführen, um zu halten diese änderungen, die ich mit einer bestimmten Ansicht.
Ich die Anwendung ausführen und die Ansicht wird nicht geladen, die benutzerdefinierte Laufzeit-Attributeund gibt diese Fehlermeldung bei der Ausgabe (nicht crash):
Unknown class MyClass in Interface Builder file
Failed to set (cornerRadius) user defined inspected property on (UIView)
Frage
Was verursacht die Anwendung nicht laden benutzerdefinierte Laufzeit-Attributedass ich unter Identity Inspector?
InformationsquelleAutor der Frage EridB | 2014-10-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den code korrekt ist.
Wenn Sie deklarieren eine
@ IBDesignable
alle@IBInspectable
Eigenschaften ausgesetzt werden, die zu der Interface Builder als Benutzer Definierten Laufzeit-Attribute.Das problem -
Ist, bedeutet, daß der Interface Builder nicht finden konnte, Klasse. Sie haben falsch eingestellt Klasseder nicht vorhanden ist in Ihrem app.
Ihre customView Klasse ist
MyView
aber im Interface Builder haben SieMyClass
Lösung zu beheben-
MyView
AuchWenn Sie beschlossen, zu entfernen, Kunden Gestaltbares sollten Sie
InformationsquelleAutor der Antwort Kostiantyn Koval
Basiert auf dem Frage-Titel, ein paar Menschen kommen hier mit einem etwas anderen problem (wie ich Tat). Wenn Sie
Dann erhalten Sie eine Fehlermeldung ähnlich
Die Lösung ist das löschen der alten Eigenschaft.
Öffnen Sie den Identity-Inspektor für Ihre Klasse, wählen Sie den Namen der Eigenschaft unter benutzerdefinierte Laufzeit-Attribute, und drücken Sie die minus-Schaltfläche (-).
Wieder, das ist nicht die Antwort auf die OP-Frage, aber es könnte die Antwort sein jemand anderes das problem, die kommt hier.
InformationsquelleAutor der Antwort Suragch
in Indentity Inspektor fügen Sie in Benutzer Definierten Laufzeit-Attribute
layer.cornerRadius
- Typ stringnach gehen Attibutes-Inspektor und wählen Sie "Clip " Untersichten"
InformationsquelleAutor der Antwort Pablo Ruan