Ich habe eine benutzerdefinierte Ansicht in einer NIB-Datei definiert und möchte eine Kopie in einem StoryBoard instanziieren, aber ich habe Probleme mit dem automatischen Layout.Probleme mit AutoLayout mit benutzerdefinierten Ansichten in NIB-Datei definiert und in StoryBoard verwendet
In einem einfachen Beispiel verfügt die benutzerdefinierte Ansicht über ein einzelnes Label mit einer festen Größe, das sowohl vertikal als auch horizontal zentriert ist. Alle verwenden das automatische Layout.
Der Dateieigentümer meiner Klasse festgelegt ist, hat es einen Zugang zum Draufsicht. Bei der Umsetzung benutzerdefinierte Ansicht ich tue:
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if(self)
{
[[NSBundle mainBundle] loadNibNamed:@"FMCompassView" owner:self options:nil];
[self addSubview:self.topView];
}
return self;
}
Nun, in meinem Drehbuch, ich UIView hinzuzufügen, setzt es ist Klasse meiner benutzerdefinierten Klasse und Layout aus Größe und mittig auf meiner Seite, wieder automatisches Layout verwenden.
Und ist mein Widget und Größe richtig positioniert ist, aber es ist Inhalt nicht wie unten dargestellt geändert wird:
Ich habe versucht, mehr Einschränkungen Zugabe nach der entlang der Linien von der NIB, etwas Laden:
Dies führt jedoch zu ungültigen Layouteinschränkungen.
Irgendwelche Ideen, wie man das zum Laufen bringt?
Prost!
denke, ich habe warum gefunden: die Sicht aus dem Laden der NIB muss angewiesen werden, die automatische Größenänderungsmaske nicht in Constraints zu konvertieren, * EVEN * wenn der Inhalt der NIB tatsächlich mit aktiviertem Auto-Layout erstellt wird. Also nach dem Laden der NIB und vor dem Hinzufügen der Draufsicht auf die benutzerdefinierte Ansicht, muss ich anrufen: '[self.topView setTranslatesAutoresizingMaskIntoConstraints: NEIN];' – mkrus
Sie können die richtige Antwort hier finden: http://StackOverflow.com/a/34524346/971329. Siehe meinen Kommentar unten für die Swift-Implementierung eines wiederverwendbaren Superview, der sich um all das kümmert. – blackjacx