CALayers wurde bei der Änderung der UIView-Grenze nicht in der Größe geändert. Warum?
Ich habe eine UIView
die etwa 8 verschiedenen CALayer
sublayer Hinzugefügt, um seine Schicht.
Wenn ich die Ansicht ändern die Grenzen (auch animiert), dann die Ansicht selbst schrumpft (ich habe es mit einem backgroundColor
), aber der Unterschichten' Größe bleibt unverändert.
Wie man dieses Problem lösen?
InformationsquelleAutor der Frage Geri | 2010-03-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe den gleichen Ansatz, Solin benutzt, aber es ist ein Tippfehler im code. Die Methode sollte sein:
Für meine Zwecke, ich wollte schon immer die Unterschicht zu sein, die volle Größe des übergeordneten Elements anzeigen. Setzen Sie diese Methode in Ihrer Klasse anzeigen.
InformationsquelleAutor der Antwort Chadwick Wood
Seit CALayer auf dem iPhone nicht unterstützt, layout-Manager, ich denke, Sie haben, um Ihre Sicht der Haupt-Ebene eine benutzerdefinierte CALayer Unterklasse, in der Sie überschreiben
layoutSublayers
um die Rahmen aller sublayer. Müssen Sie auch außer Kraft setzen, Ihre Ansicht+layerClass
Methode zum zurückgeben der Klasse Ihren neuen CALayer Unterklasse.InformationsquelleAutor der Antwort Ole Begemann
Habe ich diese in der UIView.
Funktioniert für mich.
InformationsquelleAutor der Antwort Runo Sahara
Ich hatte das gleiche problem. In einer benutzerdefinierten Ansicht der Ebene", fügte ich noch zwei weitere Unterebenen. Um die Größe der Unterschichten (jedes mal, wenn Sie die benutzerdefinierte Ansicht ist, Grenzen ändern), habe ich die Methode implementiert
layoutSubviews
meiner benutzerdefinierten Ansicht; innerhalb dieser Methode, die ich nur aktualisieren, jede Unterebene Rahmen entsprechend der aktuellen Grenzen meiner Untersicht Ebene.Etwas wie dieses:
InformationsquelleAutor der Antwort Solin
Swift 3-Version
In der Benutzerdefinierten Zelle, Fügen Sie Folgende Zeilen
Deklarieren erste
Fügen Sie dann folgende Zeilen
InformationsquelleAutor der Antwort Vinay Krishna Gupta
2017
Die wörtliche Antwort auf diese Frage:
"CALayers nicht bekommen Größe auf seine UIView die Grenzen ändern. Warum?"
ist, dass für besser oder schlechter
needsDisplayOnBoundsChange
standardmäßig auf false in
CALayer
.Lösung,
In der Tat, ich Sie direkt an das QA -
https://stackoverflow.com/a/47760444/294884
das erklärt, was die Hölle ist der kritische
contentsScale
Einstellung hat; in der Regel müssen Sie ebenso festlegen, dass beim setzen needsDisplayOnBoundsChange.InformationsquelleAutor der Antwort Fattie
Als [Ole] schrieb CALayer nicht unterstützt autoresizing auf iOS. So stellen Sie das layout manuell an. Meine option war, um anzupassen layer frame (iOS 7 und früher)
oder (ab iOS 8)
InformationsquelleAutor der Antwort DevGansta