failed example designables create bool ios swift uistoryboard xcode ibdesignable storyboard ibinspectable interface-builder

ios - example - ibinspectable swift 4



@IB Error de designación: Designables de IB: no se pudo actualizar el estado del diseño automático: la herramienta táctil Cocoa Touch de Interface Builder se bloqueó (21)

Agréguelo al final de su Podfile y ejecute pod install

# Workaround for Cocoapods issue #7606 post_install do |installer| installer.pods_project.build_configurations.each do |config| config.build_settings.delete(''CODE_SIGNING_ALLOWED'') config.build_settings.delete(''CODE_SIGNING_REQUIRED'') end end

Tengo una subclase muy simple de UITextView que agrega la funcionalidad "Marcador de posición" que puede encontrar nativa del objeto Campo de texto. Aquí está mi código para la subclase:

import UIKit import Foundation @IBDesignable class PlaceholderTextView: UITextView, UITextViewDelegate { @IBInspectable var placeholder: String = "" { didSet { setPlaceholderText() } } private let placeholderColor: UIColor = UIColor.lightGrayColor() private var textColorCache: UIColor! override init(frame: CGRect) { super.init(frame: frame) self.delegate = self } required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) self.delegate = self } func textViewDidBeginEditing(textView: UITextView) { if textView.text == placeholder { textView.text = "" textView.textColor = textColorCache } } func textViewDidEndEditing(textView: UITextView) { if textView.text == "" && placeholder != "" { setPlaceholderText() } } func setPlaceholderText() { if placeholder != "" { if textColorCache == nil { textColorCache = self.textColor } self.textColor = placeholderColor self.text = placeholder } } }

Después de cambiar la clase para el objeto UITextView en el Inspector de identidad a PlaceholderTextView , puedo establecer la propiedad Placeholder perfectamente en el Inspector de atributos. El código funciona muy bien cuando se ejecuta la aplicación, pero no muestra el texto del marcador de posición en el generador de interfaces. También recibo los siguientes errores sin bloqueo (supongo que es por eso que no se está procesando en tiempo de diseño):

error: Designables de IB: no se pudo actualizar el estado del diseño automático: la herramienta táctil Cocoa de Interface Builder se bloqueó

error: Designables de IB: no se pudo procesar la instancia de PlaceholderTextView: la representación de la vista tardó más de 200 ms. Su código de dibujo puede sufrir un rendimiento lento.

No puedo entender qué está causando estos errores. El segundo error no tiene ningún sentido, ya que ni siquiera estoy anulando drawRect (). ¿Algunas ideas?


Agregue este script al final de mi Podfile y realice la pod install nuevamente.

post_install do |installer| installer.pods_project.build_configurations.each do |config| config.build_settings.delete(''CODE_SIGNING_ALLOWED'') config.build_settings.delete(''CODE_SIGNING_REQUIRED'') end end


Asegúrese de que no está inicializando directamente UIImage o UIFont utilizando activos o fuentes añadidas en su proyecto.

Siempre creo una private func setUp() en mis clases de UI personalizadas @IBDesignable . que se llama desde init(frame: CGRect) , init?(coder aDecoder: NSCoder) . Así que finalmente actualicé la setup() la siguiente manera.

private func setUp() { //... Doing initial configurations // iconImageView.image = UIImage(named: "IconImageName")! // Causing the Crash, use if let OR guard let instead if let icon = UIImage(named: "IconImageName") { iconImageView.image = icon iconImageView.frame.size = icon.size } // nameLabel.font = UIFont(name: "Calibri-Light", size: 15.0) // Causing the Crash, use if let OR guard let instead if let font = UIFont(name: "Calibri-Light", size: size) { nameLabel.font = font } else { nameLabel.font = UIFont.systemFont(ofSize: size) } // Doing other stuffs }


Creo que la razón es que su xib no tiene el mismo tamaño que el diseño en el guión gráfico. Asegúrese de que el xib tenga la misma altura y anchura.


Cuando depuré esto descubrí que hay algunas clases que están modificando la interfaz de usuario. Por lo general, marquelabel, que es una subclase de UILabel o cualquier otra subclase de clase UIView y dibuja ui en tiempo de ejecución y colisiona con el motor Autolayout. Intente dar ancho o alto fijo para estas vistas personalizadas. Si no resuelve su problema, intente las siguientes soluciones:

Solución 1: - Descomente #use_frameworks dentro de su archivo pod.

Solución 2: intente eliminar los datos derivados. 1. Cierre la ventana del editor de su Xcode y salga del simulador -> 2. Vaya a Preferencias de Xcode -> Ubicaciones -> 3. Haga clic en la pequeña flecha gris que muestra la ruta de datos derivados -> 4. Seleccione su proyecto -> 5. Elimine todas las carpetas dentro -> 6. Salga de Xcode y vuelva a abrir


En mi caso, de alguna manera estaba relacionado con un marco de cartago que estaba usando. Tuve que agregar $ (PROJECT_DIR) / Carthage / Build / iOS a la configuración de compilación Runpath Search Paths


En mi caso, estaba haciendo lo siguiente en los métodos initWithFrame / initWithCoder para crear la vista:

className = NSStringFromClass([self class]); self.view = [[[NSBundle mainBundle] loadNibNamed:className owner:self options:nil] firstObject];

Parece que no debía usar el paquete principal , sino el paquete de la clase. Así que reemplacé ese código por lo siguiente y funcionó:

bundle = [NSBundle bundleForClass:[self class]]; className = NSStringFromClass([self class]); self.view = [[bundle loadNibNamed:className owner:self options:nil] firstObject];

Pensé que tal vez esto podría ayudar a alguien.


En mi caso, fue un problema con OneSignal. Aparentemente, tienen un error dentro de la versión 2.2.0 y superior. ¡Cambió a 2.1.6 y todo vuelve a estar bien!

Mira this .


En realidad, si tiene algunos atributos definidos por el usuario antiguos (que no son válidos para la vista actual) en cualquier vista de su guión gráfico, eso puede hacer que su agente se bloquee.

Además, a veces sucede solo por un error desagradable de Xcode. Para verificarlo, cuando esté en el guión gráfico desmarque Editor> Actualizar automáticamente las vistas, luego muévase a otro archivo, limpie y reinicie su proyecto. Después de ingresar nuevamente al guión gráfico, puede hacer clic en Editor> Actualizar vistas y verificar una vez más automáticamente. Ese también resolvió mi problema una vez.

Si ambos no funcionaron, entonces probablemente haya hecho algo incorrecto en su vista de IBDesignable, así que elija sus vistas bloqueadas en el guión gráfico y depure haciendo clic en Editor> Vistas de depuración


Es como si obtuviera Código de otro Desarrollador y obtiene este error. Solo corre

pod install

Esto funcionó para mí. Espero eso ayude.


Estaba experimentando los problemas similares de Interface Builder al representar los designables.

Utilizando la técnica sugerida en esta answer pude rastrear el problema hasta el uso de literales de imagen.

Renderizado

self.backgroundImage.image = #imageLiteral(resourceName: "rectangleCenter")

Sin bloqueo de renderizado

self.backgroundImage.image = UIImage(named: "rectangleCenter")


Este no es el caso para esta pregunta, pero tal vez pueda ayudar a alguien más.

Tuve un problema similar cuando en mi clase @IBDesignable no implementé ambos:

required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) // custom setup } override init(frame: CGRect) { super.init(frame: frame) // custom setup }


He tenido el mismo problema un par de veces. Ambas veces comenzó cuando estaba cargando una plumilla IBDesignable en el guión gráfico cuando la plumilla no cabía en la vista (es decir, tenía un botón fuera de la UIView pero todavía en la plumilla). Una vez que arreglé que Xcode todavía me daba errores, reinicié Xcode hasta que dejó de darme el error al azar.

Espero que esto ayude.

ACTUALIZACIÓN: Acabo de eliminar todos los procesos llamados "Interface Builder Cocoa Touch Tool", reinicié Xcode y el error desapareció. No sé si esto siempre funcionará o no.


Para Xcode 8 - Swift

Agregar valor opcional como valor predeterminado en @IBInspectable causa un problema.

Esto no funcionará:

@IBInspectable var repeatImage: UIImage = UIImage(named:"myImage")!{ didSet { // configureView } }

Esto debería funcionar:

@IBInspectable var repeatImage: UIImage = RepeatImageView.getDefaultImage() { didSet { // configureView() } } class func getDefaultImage() -> UIImage { if let defaultImage = UIImage(named: "myImage") { return defaultImage } else { return UIImage() } }


Para mí era un certificado de firma faltante, porque nunca ejecuté la aplicación, por lo que Xcode aún no creó un certificado. Una vez que ejecuté la aplicación, la representación de IBDesignable funcionó bien.


Puede seleccionar su vista personalizada en Interface Builder y luego usar Editor , Debug Selected Views . IBDesignableAgentCocoaTouch llamada sesión de depuración IBDesignableAgentCocoaTouch cuando todos los puntos de interrupción (incluidos los puntos de interrupción de excepción) funcionen y usted pueda identificar exactamente el lugar donde se bloquea su vista.


Se generan informes de fallas cuando se bloquea la herramienta de interfaz de usuario Cocoa Touch. Las tesis se encuentran en ~/Library/Logs/DiagnosticReports y se denominan IBDesignablesAgentCocoaTouch_*.crash . En mi caso, contenían un útil seguimiento de pila que identificaba el problema en mi código.


Simplemente deje que se compile y ejecute en el simulador si tiene un error en algún otro lugar del proyecto, simplemente coméntelo y ejecute primero lo que se designe para actualizarlo y descomentar los otros códigos. Esto funciona para mi.


Solo me faltaba esta línea de platform :ios, ''7.0'' de código platform :ios, ''7.0'' y el problema se resolvió. Solo esta línea en su archivo pod y la actualización de su problema pod se resolverá.


Tuve el mismo problema y lo resolví agregando ''use_frameworks!'' al Podfile de mi proyecto.

Espero que te ayude.


Un problema importante es cuando crea @ IBDesignable, asegúrese de que el archivo cocoapod no esté incluido en los UITests o de lo contrario causará este bloqueo.