ios - tutorials - Error al establecer(cornerRadius) propiedad inspeccionada definida por el usuario en(UIView)
storyboard apple (3)
El código es correcto
Cuando declara un @ IBDesignable
todas las propiedades @IBInspectable
están expuestas a Interface Builder como Atributos de tiempo de ejecución definidos por el usuario.
El problema -
Clase desconocida MyClass en el archivo de Interface Builder
Significa que Interface Builder no pudo encontrar alguna clase. Has configurado una clase incorrecta que no existe en tu aplicación.
Su clase customView es MyView
pero en el Interface Builder tiene MyClass
Solución para arreglar -
- Establezca la clase correcta en el Builder de interfaz, en su caso
MyView
- Verifique el estado Designable . Debería estar actualizado , si no es que algo está mal.
Además, si decidió eliminar al cliente Designable, debería
- Eliminar clase personalizada
- Eliminar los atributos de tiempo de ejecución definidos por el usuario
Detalles
Estaba viendo el video de la sesión 411 en la WWDC 2014 en referencia a " Novedades en Interface Builder ", y estaba probando cómo crear Frameworks para hacer clases @IBDesignable
para obtener una vista previa de mis cambios en Storyboard sin tener que ejecutar la aplicación.
@IBInspectable
propiedades @IBInspectable
se muestran correctamente cuando agrego mi clase a una vista específica y estoy renderizando la vista correctamente con el siguiente código:
Código
@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
}
}
}
Iniciar sesión
Noté que estos atributos se agregaban a los atributos de tiempo de ejecución definidos por el usuario (bajo el Inspector de identidad ). Ahora, lo que estoy esperando de esto es cuando ejecuto el código para mantener estos cambios que hice con una vista específica.
Ejecuto la aplicación y la vista no carga los atributos de tiempo de ejecución definidos por el usuario , y proporciona este error en la salida (no se bloquea):
Unknown class MyClass in Interface Builder file
Failed to set (cornerRadius) user defined inspected property on (UIView)
Pregunta
¿Qué causa que la aplicación no cargue los atributos de tiempo de ejecución definidos por el usuario que agregué en Identity Inspector ?
Basado en el título de la pregunta, algunas personas pueden venir aquí con un problema ligeramente diferente (como yo). Si tu
- agregó un @IBInspectible
- y luego lo borré en el código
Entonces también puede obtener un error similar a
Error al establecer (xxx) propiedad inspeccionada definida por el usuario en [Su Vista Personalizada] ...: esta clase no cumple con el valor clave de codificación para la clave [xxx].
La solución es eliminar la propiedad anterior.
Abra el inspector de identidad para su clase, seleccione el nombre de la propiedad en Atributos de tiempo de ejecución definidos por el usuario y presione el botón menos (-).
Una vez más, esta no es la respuesta a la pregunta del OP, pero podría ser la respuesta al problema de otra persona que viene aquí.