2014-09-08 6 views
13

Ich habe versucht, eine benutzerdefinierte freefrom Ansicht mit Interface Builder zu erstellen. Ich habe eine UIView, die eine UIImageView und UILabel enthält. Ich setze die Einschränkungen auf das Anpassen des Labels entsprechend dem Image etc und einem Rand zum Superview.Implizite Einschränkung iPhone Portrait Bildschirmhöhe

Jetzt möchte ich die Superview genau die Subviews passen. Aber wenn ich Editor -> Größe an Inhalt anpassen drücke, wird die Superansicht nicht vollständig angepasst und die Constraints sind in Konflikt. Was dort erscheint, ist eine implizite Einschränkung ("iPhone Portrait Screen Height"), die nicht verändert/gelöscht werden kann. Siehe Screenshot unten:

enter image description here

+1

Ich bin auch heute auf dieses Problem gestoßen. Es scheint mir, dass die Grundansicht immer so behandelt wird, als würde sie die Größe des gesamten Bildschirms haben, obwohl ich sie als Freiform einstelle. Ich überlege, einen Fehler bei Apple einzureichen. –

+1

Haben Sie eine Lösung gefunden? Ich habe das gleiche Problem heute. – Kremk

+1

Irgendwelche Updates zu diesem Thema? Scheint immer noch ein Problem zu sein. – Tylerc230

Antwort

0

Nur um es einfach das Etikett vergessen für den Augenblick. Sie haben bereits die Beschränkung für Breite und Höhe der Bildansicht hinzugefügt. Statt nun den Inhalt von Sizetofit zu verwenden, fügen Sie der Bildansicht und der übergeordne- ten Ansicht einen führenden, abschließenden, oberen und unteren Rand hinzu. Damit sollte Ihre Elternansicht in die Bildansicht passen.

Die gleiche Technik (Einschränkungen der übergeordneten Ansicht) kann verwendet werden, um es mit der Bildansicht und der Beschriftung zusammen zu arbeiten.

+0

Ich habe bereits diese Einschränkungen und es funktioniert nicht. Ich setze die führende, nachlaufende, ... Priorität auf 1000, was bedeutet, dass sie obligatorisch sind. Dann erscheinen diese seltsamen impliziten Einschränkungen (iPhone Portrait Screen Height). Es scheint, dass der Interface Builder das Seitenverhältnis des Portrait-Modus beibehalten möchte. Aber diese Ansicht wird als MKAnnotationView verwendet, so dass ich das Verhältnis nicht beibehalten muss. – kaeLum

+0

und es passiert nur, wenn die Superview der Rootview der Feder ist! – kaeLum

+0

das ist ein ernstes Problem für mich! – kaeLum

1

Obwohl nicht ideal, abhängig davon, wie Ihre XIB strukturiert ist und wie Sie die Ansicht referenzieren, können Sie eine "Notizblock" -Ansicht erstellen und Ihre benutzerdefinierte Ansicht darin platzieren, um zu sehen, wie alles aufgebaut wird. Das heißt, wenn Sie die Ansicht auf einen im XIB-Dateieigner definierten Ausgang setzen, können Sie ihn einfach mit der Ansicht verbinden, die Sie im "Notizblock" erstellt haben.

Zum Beispiel habe ich eine Containeransicht mit einem Quadrat und einem Schalter im Inneren erstellt. Das obere Beispiel klagt über widersprüchliche Constraints und wird nicht korrekt angeordnet, während das untere Beispiel dasselbe in einer Wegwerfansicht zeigt. Wiederum nicht ideal, aber es funktioniert für mich.

enter image description here

Edit: Ich habe erkannt, dass einige Größenklasse Einschränkungen verloren werden, sobald die „scratch pad“ Ansicht verworfen wird, so dass eine andere Falte zu betrachten ist. Ich schaue immer noch darauf.

0

Ich bemerkte, dass, wenn ich die Breite und Höhe des SuperViews physisch zog, um die Einschränkungen zu erfüllen, die roten Randbedingungsfehler zusammen mit der Einschränkung "iPhone Portrait Screen Width" verschwanden. Mit anderen Worten, meine Einschränkungen diktierten, dass meine Unteransicht unten mit ihrer Superansicht ausgerichtet war. Wenn ich die untere Kante der Superview nach oben gezogen habe, um sie bündig mit der Unteransicht auszurichten, gingen die Fehler weg. Scheint immer noch fehlerhaft und nicht intuitiv.

+0

In Xcode 6.3.1 funktioniert das immer noch nicht.Dies scheint nicht fehlerhaft und nicht intuitiv. Dies ist fehlerhaft und nicht intuitiv. Jetzt ist die einzige Lösung, die ich bekomme, die Einschränkung und die Größe des Containers zu ändern. All meine Produktivität ist verloren mit dieser Art von .... Sorry, es zuzugeben, aber XCode/IB/Swift scheint so schlampig Arbeit und sie verbessern nicht meine Produktivität wie Apple es verkaufen. –

Verwandte Themen