@ IBDesignable - Ansicht wird nicht wie erwartet gerendert
Ich habe ein benutzerdefiniertesUIView
Unterklasse, die ich mit @ zu rendern versuc@IBDesignable
.
Ich habe ei@IBInspectable
Eigenschaft mit dem Namenimage
, das ich vom Interface Builder festgelegt habe.
Wenn ich den Interface Builder öffne, wird dasimage
, das ich wähle, wird in der Ansicht nicht richtig gerendert, das heißt, es scheint ein Problem mit dem automatischen Layout zu geben. Als ich das @ überprüfReport navigator
Ich erhalte eine Warnung imInterface Builder
group.
Showing All Messages
(null): -pie being ignored. It is only used when linking a main executable
Dies geschieht unter demLink <IBDESIGNABLE_EXECUTABLE>
Sektion
Ich habe keine Ahnung, wie ich das beheben soll. Versuchte viele Lösungen vonS. Bereinigen des Build-Ordners, Löschen abgeleiteter Daten usw. Es hat nichts funktioniert.
Bitte geben Sie Ihre wertvollen Kommentare oder eine Lösung für dieses Problem. Vielen Dank! :)
BEARBEITEN
Danke an @Rob, ich könnte mich auf das Problem konzentrieren.
Was ich habe
EinIBDesignable
UIView
Unterklasse mit Eigenschaften:
@IBInspectable
Eigenschaft mit dem Namenimage
.an ImageViewa ScrollViewIch initialisiere und füge die ScrollView und ImageViews mit @ als Subviews hin
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initialiseImageView()
}
override init(frame: CGRect) {
super.init(frame: frame)
initialiseImageView()
}
Problem
IminitialiseImageView()
:
Ich füge das @ hinscrollView
als Unteransicht desUIView
undImageView
als Unteransicht desscrollView
um das @ zu benutzviewForZooming
delegieren. Ich füge auch Einschränkungen hinzu, um die Ansichten beizubehalten.
Das Problem ist, wenn ich benutze:
self.translatesAutoresizingMaskIntoConstraints = false
Wenn ich dies verwende, erhalte ich zur Laufzeit Autolayout-Warnungen. Aber dieimageView
ist in @ verleinterface builder
, obwohl das Bild korrekt gerendert wurde.
Wenn ich das gleiche kommentiere, ist alles wie erwartet ininterface builder
. Aber die Benutzeroberfläche bricht zur Laufzeit aufgrund vonAutoresizingMaskIntoConstraints
.
Ich habe den Code in github. Ich versuche den letzteren Ansatz in @ erwäh TN2154
Ich setze alleAutoresizingMaskIntoConstraints to be false and adding the constraints for the subviews in the code itself. The constraints for the <code>UIView</code> subclass are added in the interface builder directly and no warnings exist as of now. The code works as expected at runtime also. The <code>IBDesignable</code> part is the one that is not working as expected.
<p>Strangely enough, When I removed the line</p><pre><code>self.translatesAutoresizingMaskIntoConstraints = false
</code></pre>
everything is working perfectly. The error that I used to get at runtime is now gone. I don't know if something else that I did fixed it. Thanks a lot for helping to pin point the issue @Rob.