@IBDesignable error: Ib Designables: Failed to update Auto layout status: Interface Builder Cocoa Touch Tool crashed
Mam bardzo prostą podklasę UITextView, która dodaje funkcję "Placeholder", którą można znaleźć natywnie w obiekcie pola tekstowego. Oto Mój kod do podklasy:
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
}
}
}
Po zmianie klasy dla obiektu UITextView
w Inspektorze tożsamości na PlaceholderTextView
, Mogę ustawić właściwość Placeholder
w Inspektorze atrybutu. Kod działa świetnie podczas uruchamiania aplikacji, ale nie wyświetla tekstu zastępczego w kreatorze interfejsu. Dostaję również następujące nieblokujące błędy (zakładam, że to dlatego nie jest renderowanie w czasie projektowania):
W związku z tym, że nie jest to możliwe, nie jest to konieczne, aby uzyskać więcej informacji na ten temat.]}Nie jestem w stanie rozgryźć, co jest przyczyną tych błędów. Drugi błąd nie ma sensu, bo nie jestem nawet nadpisując drawRect (). Jakieś pomysły?Error: Ib Designables: Failed to rendered instance of PlaceholderTextView: renderowanie widoku trwało dłużej niż 200 ms. Twój kod rysowania może cierpieć z powodu niskiej wydajności.
21 answers
Istnieją raporty o awariach generowanych podczas awarii narzędzia Interface Builder Cocoa Touch. Tezy znajdują się w ~/Library/Logs/DiagnosticReports
i noszą nazwę IBDesignablesAgentCocoaTouch_*.crash
. W moim przypadku zawierały one użyteczny stack-trace, który zidentyfikował problem w moim kodzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-22 14:49:42
Miałem ten sam problem kilka razy. Oba razy zaczęło się, gdy ładowałem stalówkę IBDesignable na storyboard, gdy stalówka nie była w stanie zmieścić się na widoku(tj. Gdy naprawiłem, że xCode nadal dał mi błędy, więc ponownie uruchomiłem Xcode, aż losowo zamknąć dając mi błąd.
Mam nadzieję, że to pomoże.
UPDATE: właśnie zabiłem wszystkie procesy o nazwie "Interface Builder Cocoa Touch Tool", uruchomiłem ponownie Xcode i błąd zniknął. Nie wiem, czy to zawsze zadziała, czy nie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-25 14:09:49
W moim przypadku robiłem następne w initwithframe / initwithcoder metody tworzenia widoku:
className = NSStringFromClass([self class]);
self.view = [[[NSBundle mainBundle] loadNibNamed:className owner:self options:nil] firstObject];
Wygląda na to, że byłem nie powinien używać pakietu głównego , ale zamiast tego pakietu klasy. Więc podmieniłem ten kod na następujący i zadziałał:
bundle = [NSBundle bundleForClass:[self class]];
className = NSStringFromClass([self class]);
self.view = [[bundle loadNibNamed:className owner:self options:nil] firstObject];
Pomyślałam, że może to komuś pomoże.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-11 00:17:58
Możesz wybrać swój własny widok w Kreatorze interfejsów, a następnie użyć
Editor
, Debug Selected Views
. Uruchomi tak zwaną sesję debugowania IBDesignableAgentCocoaTouch
, gdy wszystkie punkty przerwania (w tym punkty przerwania WYJĄTKÓW) będą działać i będziesz mógł dokładnie określić miejsce, w którym twój widok ulegnie awarii.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-06 20:23:52
Dla XCode8-Swift
Dodanie opcjonalnej wartości jako wartości domyślnej na @IBInspectable
powoduje dla mnie problem.
To nie zadziała:
@IBInspectable var repeatImage:UIImage = UIImage(named:"myImage")!{
didSet{
// configureView
}
}
To powinno zadziałać:
@IBInspectable var repeatImage:UIImage = RepeatImageView.getDefaultImage(){
didSet{
// configureView()
}
}
class func getDefaultImage()->UIImage{
if let defaultImage = UIImage(named: "myImage"){
return defaultImage
}else{
return UIImage()
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-27 19:36:13
Miałem podobne problemy z tworzeniem interfejsów.
Przy użyciu techniki sugerowanej w tej ODPOWIEDŹ udało mi się wyśledzić problem do korzystania z literałów obrazu.
Rendering crash
self.backgroundImage.image = #imageLiteral(resourceName: "rectangleCenter")
Brak awarii renderingu
self.backgroundImage.image = UIImage(named: "rectangleCenter")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-25 06:19:47
Właściwie jeśli masz jakieś Stare atrybuty zdefiniowane przez użytkownika (które nie są ważne dla bieżącego widoku) w dowolnym widoku w storyboardzie, które mogą spowodować awarię agenta.
Poza tym czasami zdarza się to tylko z powodu paskudnego błędu Xcode. Aby to sprawdzić, gdy jesteś w storyboard odznacz opcję Edytor > automatycznie odśwież widoki, a następnie przejdź do innego pliku, wyczyść i uruchom ponownie projekt. Po ponownym wejściu do storyboard możesz kliknąć edytor > odśwież widoki i sprawdzić znowu automatyczny. Ten też raz rozwiązał mój problem.
Jeśli oba nie działały, prawdopodobnie zrobiłeś coś złego z widokiem IBDesignable, więc wybierz awarię widoków w storyboard i debuguj, klikając edytor > Debuguj widoki
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-31 19:15:59
W moim przypadku było to w jakiś sposób związane z frameworkiem Kartaginy, którego używałem. Musiałem dodać $(PROJECT_DIR) / Carthage / Build/iOS do Runpath Search Paths build setting
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-08 12:45:41
W moim przypadku był to problem z OneSignal. Najwyraźniej mają błąd w wersji 2.2.0 i wyższej. Przełączyłem na 2.1.6 i znowu wszystko jest super!
Zobacz to .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-11 21:29:07
Miałem ten sam problem, ale rozwiązałem go dodając ' use_frameworks!'do PodFile twojego projektu.mam nadzieję, że to ci pomoże.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-30 22:10:14
Tak nie jest w przypadku tego pytania, ale może pomogę komuś innemu.
Miałem podobny problem, gdy w mojej klasie @ IBDesignable nie zaimplementowałem obu:
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
// custom setup
}
override init(frame: CGRect) {
super.init(frame: frame)
// custom setup
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-31 13:20:20
Kiedy to debugowałem, odkryłem, że istnieją pewne klasy, które modyfikują interfejs użytkownika. Zazwyczaj marquelabel, który jest podklasą UILabel lub innej podklasy UIView i rysowanie interfejsu użytkownika w czasie pracy i kolizji z silnikiem Autolayout. Spróbuj podać stałą szerokość lub wysokość dla tych niestandardowych widoków. Jeśli to nie rozwiąże Twojego problemu, wypróbuj następujące rozwiązania: -
Rozwiązanie 1: - Uncomment # use_frameworks wewnątrz pliku pod.
Rozwiązanie 2: - Spróbuj usunąć dane pochodne. 1. Zamknij Edytor okno twojego Xcode i zamknij symulator - > 2. Przejdź do Preferencje Xcode - > lokalizacje - > 3. Kliknij małą szarą strzałkę pokazującą pochodną ścieżkę danych - > 4. Wybierz swój projekt - > 5. Usuń wszystkie foldery wewnątrz -> 6. Quit Xcode and reopen
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-16 10:27:52
Dodaj go na dole Podfile i uruchom 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-09 12:52:22
Dodaj ten skrypt na końcu mojego Podfile
i wykonaj pod install
ponownie.
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-25 01:44:40
Uważam, że powodem jest to, że Twój xib nie jest tego samego rozmiaru, co projekt w storyboardzie. Upewnij się, że xib ma taką samą wysokość i szerokość.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-16 19:37:19
Właśnie brakowało mi tej linijki kodu
platform :ios, '7.0'
i problem został rozwiązany. Tylko ta linia w pliku pod i zaktualizuj problem pod zostanie rozwiązany.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-08 12:54:50
Dla mnie był to brakujący certyfikat podpisywania, ponieważ nigdy nie uruchomiłem aplikacji, więc Xcode nie stworzył jeszcze certyfikatu. Po uruchomieniu aplikacji rendering IBDesignable
działał dobrze.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-16 07:22:30
To tak, jakbyś dostał Kod od innego dewelopera i dostajesz ten błąd. Just run
pod install
To mi pomogło.
Mam nadzieję, że to pomoże.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-28 14:20:36
Upewnij się, że nie inicjujesz bezpośrednio UIImage
lub UIFont
korzystanie z zasobów lub czcionek dodanych w projekcie.
Zawsze tworzę private func setUp()
w moich klasach @IBDesignable
custom UI
.
które nazywa się od init(frame: CGRect)
, init?(coder aDecoder: NSCoder)
. Więc w końcu zaktualizowałem setup()
w następujący sposób.
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
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-24 10:30:43
Głównym problemem jest to, że podczas tworzenia @ IBDesignable upewnij się, że plik cocoapod nie jest dołączony do Uitestów, inaczej spowoduje to awarię.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 12:37:50
Po prostu pozwól mu zbudować i uruchomić na symulatorze, jeśli masz błąd w innym miejscu w projekcie, po prostu skomentuj go i uruchom designable pierwszy, aby zaktualizować designable i odkomentować inne kody. Dla mnie działa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-10 06:57:49