2013-09-22 12 views
14

iOS7 hat mich wirklich herumgerissen.Mehrdeutiges Layout - "Höhe ist mehrdeutig für 'Bildansicht'"

Dies ist ein Projekt, das von iOS6 importiert wurde und problemlos auf allen Geräten lief, auf denen ich getestet habe. Irgendwie wird die abgebildete Bildansicht zur Laufzeit auf etwa 312x400 gesetzt, wobei die Spezifikation für die Höhe ignoriert wird, die ich im Storyboard eingestellt habe.

Ich bin mir bewusst, ich vermisse etwas Detail über das automatische Layout, aber was gibt es? Warum spielt die Höhe, die ich zur Verfügung gestellt habe, keine Rolle und warum unterscheidet sich diese von Xcode4.x/ios6?

Snapshot from Xcode5

Antwort

17

Das Layout für die Ansichtshöhe Objektbild ist mehrdeutig. Wenn Sie das automatische Layout verwenden, wird die Höhe der Bildansicht in Interface Builder nicht verwendet. Stattdessen werden die in der Bildansicht festgelegten Einschränkungen verwendet.

Erstellen Sie eine Höhenbeschränkung für die Bildansicht und legen Sie sie so fest, wie die Höhe sein soll (bei fester Höhe). Wenn Sie die Höhe skalieren möchten, erstellen Sie Einschränkungen für die Ober- und Unterseite der Bildansicht in der Superansicht der Bildansicht. Für den von Ihnen bereitgestellten Screenshot möchten Sie möglicherweise eine Einschränkung vom oberen Rand der Bildansicht bis zum oberen Layout-Leitfaden festlegen.

+0

Warum also gibt es sogar die Dummy-Box, mit der ich eine Höhe angeben kann? Und kann ich nicht einfach Einschränkungen erzeugen, indem ich den Artikel in IB an geeigneter Stelle platziere und eine feste Größe festlege? – user

+1

Diese Felder existieren in IB, daher weiß es, welche Größe die Ansicht nur in IB anzeigen soll (wenn das automatische Layout aktiviert ist). Wenn das automatische Layout deaktiviert ist und das alte System für Streben und Federn aktiviert ist, werden die Felder zur Laufzeit für Breite und Höhe verwendet. Wenn das automatische Layout aktiviert ist, müssen Sie Einschränkungen erstellen, wenn Sie eine feste Größe wünschen. – Andrew

0

Wenn Sie automatisches Layout verwenden, und Sie sind, müssen Sie Einschränkungen festlegen, die das vertikale und horizontale Layout erfüllen können.

In diesem Fall sieht es so aus, als ob Sie Ihrer Bildansicht Höhen- und Breiteneinschränkungen hinzufügen könnten.

+0

Ich habe auch ein ähnliches Problem in UICollectionView.Ich verwende Auto-Layout, um Daten in UICollectionViewCell zu setzen. Im Interface Builder sieht alles perfekt aus. Nach dem Ausführen der App debugge ich meine App und es zeigt mehrdeutige Position für UIView. –

16

enter image description here

Satz intrinsische Größe als Platzhalter.

+0

Danke! Dies erlaubte meiner UIControl-Unterklasse, an die Größe des Etikettentexts anzupassen, die darin enthalten war, ohne sich mit den Einschränkungen für die explizite Einstellung der Breite herumschlagen zu müssen und die Warnung loszuwerden. –

Verwandte Themen