2016-03-21 5 views
0

Ich erstelle eine benutzerdefinierte IBDesignable UIView namens MyUIView, die aus einer .xib-Datei instanziiert wird. MyUIView soll in meiner App wiederverwendet werden.Festlegen der Größe für die benutzerdefinierte Benutzeroberfläche in ios

Das Problem, das ich konfrontiert wurde, ist, dass, wenn ich eine MyUIView-Ansicht in einem UIViewController in einem Storyboard erstellen, erfordert die automatische Layout-Einstellung Einschränkungen für die Breite und Höhe der Ansicht. MyUIView hat eine variable Höhe und ich hatte gehofft, dass die Ansicht die Breite und Höhe der gerenderten MyUIView einfach umbrechen kann, ohne dass ich die Größe der Ansicht im Storyboard festlegen muss.

Wie erreiche ich das?

Danke!

Antwort

0

Überschreiben Sie intrinsicContentSize in Ihrer Sichtklasse. Die Auto-Layout-Engine verwendet diese Größe für Ihre Ansicht, sofern Sie keine expliziten Einschränkungen angeben.

Beachten Sie, dass Sie die Ansicht invalidateIntrinsicContentSize() immer dann aufrufen müssen, wenn sich die tatsächliche Größe ändert.

+0

Ich habe das getan, aber automatische Layout erfordert nach wie vor mir func intrinsicContentSize eine Höhe 'überschreiben, um() -> CGSize { return CGSize (Breite: UIScreen.mainScreen() bounds.size.width, Höhe: 85.) } ' – WKL

+0

Btw, die Dokumentation sagt" Gibt die natürliche Größe für die empfangende Ansicht, ** berücksichtigt nur Eigenschaften der Ansicht selbst ** ", so bin ich mir nicht sicher, ob die Bildschirmbreite gültig ist. –

+0

Ja. Für diese spezielle Ansicht muss immer die Bildschirmbreite ausgefüllt werden – WKL

Verwandte Themen