2017-12-12 11 views
0

Ich habe viele Anwendungen, die ziemlich gut funktioniert, und ihr Layout ist gut auf jedem Gerät, außer von iPhone X. Wenn ich die Anwendungen auf dem iPhone X ausführen "dehnen" Sie die Ansicht und es sieht komisch aus. Es umfasste auch die Sicherheitsbereiche. Wie kann ich sicherstellen, dass es nur innerhalb des sicheren Bereichs ist und den Hintergrund, die Teile, die nicht Teil des sicheren Bereichs sind, mit der normalen Hintergrundfarbe der App ausmalen?AutoLayout in iPhone X

This is how it looks on iPhone 8, or any other phone which is not X

And this is how it looks on iPhone X.

Antwort

1

Es sieht aus wie Ihr Layout stark auf das Seitenverhältnis des Geräts hängt und, genauer gesagt, seine Bildschirmbreite. Wenn ich eine Vermutung wagen würde, würde ich sagen, dass Sie wahrscheinlich die Größe Ihrer Unteransichten und die Zwischenauffüllung als eine Funktion der Breite ihrer Superansicht berechnen und, hier entscheidend, die Eckradien der Untersichten fest codieren oder falsch berechnen ' Lagen.

Normalerweise würde ich dies als ein Designproblem betrachten und vorschlagen, dass Sie eine Möglichkeit finden, diese Ansichten so zu verändern, dass sie unabhängig vom Seitenverhältnis des Geräts nicht verzerrt werden, da keinerlei Garantien hinsichtlich der Displaygrößen und -eigenschaften gegeben werden müssen in der Zukunft unterstützt werden, wie die Kerbe des X zeigt.

Wenn Sie versuchen, etwas schnell und schmutzig zu erledigen und lieber so wenig wie möglich von Ihrem vorhandenen Code zu ändern, kann ich die Ansicht in eine Containeransicht im Interface Builder oder im Code einfügen und dann einschränken Das Seitenverhältnis des Containers zu dem von Ihnen ausgewählten Format. Sie könnten dann die Superview des Containers die gleiche Hintergrundfarbe wie der Container haben und den Container in seiner Superview zentrieren. Dies würde effektiv dem Hinzufügen von Balken oberhalb und unterhalb des Containers entsprechen, um den ursprünglichen Aspekt beizubehalten. Ich halte das für einen Bandaid, um ehrlich zu sein. Sie sollten in der Lage sein, die Breite eines Geräts ungeachtet seines Seitenverhältnisses in einem perfekten Szenario anzupassen.