Farbsätze und UIColorAttributeTraitStorage-Fehler

8

Ich habe versucht, eine App geschrieben in Xcode 9 für iOS11 iOS9.0-kompatibel zu machen und plötzlich stürzte es mit diesem Fehler auf iPhone 4S:

%Vor%

Das gleiche Projekt läuft auf dem iPhone 7 einwandfrei.

Ich habe alle [UIColor colorNamed:] wie Xcode vorgeschlagen:

geändert %Vor%

Aber der Fehler ist nirgendwohin gegangen. Ich habe auch keine Erwähnung von UIColorAttributeTraitStorage in der Apple-Dokumentation oder irgendwo im Web gefunden außer einigen japanischen (?) Post . Alles, was ich aus diesem Post verstanden habe, ist, dass wahrscheinlich jemand mit dem gleichen Problem mit Color Set in iOS 10.3 und Xcode 9 konfrontiert wurde.

So scheint es das Problem in xcassets mit Farbsets zu sein. Bedeutet dies, dass es keine Rückwärtskompatibilität für Farbsets gibt? Und wenn ich eine hinzufügen, gibt es keine Möglichkeit, meine App für iOS unter 11.0 zu verteilen?

PS .: Ich habe kein iOS 10-Gerät, daher weiß ich nicht, ob das Problem seit der Veröffentlichung von Xcode 9 für 10+ immer noch besteht. Kann jemand es versuchen?

    
Maria Scanavie 26.09.2017, 15:07
quelle

3 Antworten

16

Ich habe das gleiche Problem bei der Verwendung der neuen Farbsets in Xcode 9 Interface Builder festgestellt. Wenn Sie iOS 10 oder früher unterstützen müssen, verwenden Sie keine Farbe aus dem Farbsatz in Interface Builder.

Stellen Sie also sicher, dass Sie im Interface Builder keine Farben über iPhoneSDK auswählen.

    
zzzel 27.09.2017, 17:15
quelle
6

TL; DR ; Möglicherweise haben Sie eine Farbe aus der Dropdown-Liste "Zuletzt verwendete Farbe" ausgewählt, bei der es sich um ein definiertes Farb-Asset in einem anderen Projekt als dem aktuell verwendeten Projekt handelt. Stellen Sie sicher, dass Sie keine Farbe in einer Feder oder einem Storyboard haben, die als Fehlend markiert sind.

Sagen Sie, dass Sie in "Projekt 1" ein Farb-Asset definieren, und nennen Sie es z. "YorkGreen" wie im folgenden Beispiel.

Diese Farbe wird im Dropdown-Menü "Zuletzt verwendete Farben" für alle anderen Projekte angezeigt . Und wenn Sie es (aus einem anderen Projekt als "Projekt 1") auswählen, wird beim Laden dieser Ansicht (Nib oder Storyboard) ein NSInvalidUnarchiveOperationException ausgelöst und Ihre App stürzt ab.

%Vor%

Hoffentlich ist es ein Fehler, dass Xcode 9 sogar Farb-Assets von anderen Projekten zeigt und dass dies in einer zukünftigen Version von Xcode behoben wird.

    
Groot 04.10.2017 09:17
quelle
2

Zusätzlich zu den Antworten oben:

Leider gibt es keinen schnellen Weg, dies zu beheben - Xcode gibt Ihnen keinen Hinweis, welche UI-Elemente Farben aus 'Benannte Farben' haben. Der einzige Beweis ist diese kleine Warnung:

Hier können Sie Ihr Leben ein bisschen einfacher machen:

  1. Löschen Sie den Verweis auf Ihre Farbressourcensammlung aus dem Projekt

  2. Überprüfen Sie alle Ihre .xib-Dateien auf etwas wie diese

  1. Klicken Sie darauf und gehen Sie zum Optionsmenü "Andere"

  1. Öffnen Sie die Registerkarte "Farbschieberegler" und klicken Sie einfach auf einen beliebigen Farbwert

  1. Farbe wird angewendet und als lokaler Wert gespeichert

Eine andere Möglichkeit, das Problem anzugehen:

  1. Führen Sie die obigen Schritte zu einem Ihrer UI-Elemente aus.

  2. Prüfe Git, du wirst eine Änderung wie diese sehen

    %Vor%
  3. Öffnen Sie Ihr Projekt in Atom oder sublime wie ein Projektordner, suchen Sie nach <color key="textColor" name="name of you color"/> und ersetzen Sie es überall

Vladimir 29.11.2017 14:30
quelle

Tags und Links