wenderlich tutorials apple ios swift ios8 interface-builder

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í.


en el inspector de Indentity agregue atributos de tiempo de ejecución definidos por el usuario

layer.cornerRadius - tipo cadena

después de ir al inspector de Attibutes y seleccione "Subvistas de Clip"