Bild 'resizeMode' enthält nicht in reactive native

11

Ich verwende React Native auf einem echten Android-Gerät. Beim Erstellen einer wirklich einfachen App mit nur der folgenden Render-Funktion auf der Haupt-App-Komponente ...

%Vor%

Ich erhalte das folgende Ergebnis auf meinem Gerät:

Wie Sie sehen können, ist der gesamte Hintergrund gelb, so dass das Bildelement tatsächlich die gesamte Bildschirmgröße einnimmt. Aber es wird nur falsch wiedergegeben. Der resizeMode "cover" funktioniert wie erwartet (und auch der Stretch-Modus). Es ist der "contain" -Modus, der nicht funktioniert (der wichtigste aus meiner Sicht). Das Problem wird noch schlimmer, wenn das Bild in einer ListView platziert wird, da das Bild nicht einmal angezeigt wird.

UPDATE 1 Wie Frederick darauf hinweist, funktioniert "contain" nur, wenn das Bild größer als die Containergröße ist. Wie können wir also sicherstellen, dass das Bild die gesamte Containergröße einnimmt, während das Seitenverhältnis beibehalten wird? Die Prozentwerte werden noch nicht von React-Stilen unterstützt, und ich weiß nicht, wie ich die Bildbreite und -höhe nach dem Laden des Bildes ermitteln kann. Keines der mit der Image-Komponente verknüpften Ereignisse stellt diese Informationen zur Verfügung.

UPDATE 2 Gute Nachrichten. Ich verwende jetzt React Native v0.24.1 und es scheint, dass der 'contain' Modus des Bildes nun wie erwartet funktioniert, auch wenn die tatsächliche Bildgröße kleiner ist als der Container. Zvonas Lösung ist gut (obwohl Sie beachten müssen, dass onLayout Ihnen die Bildansichtsgröße gibt, in der das Bild gerendert wird, aber NICHT die tatsächliche Bildgröße, die geladen wird). Im Moment weiß ich keine Möglichkeit, die tatsächliche Bildgröße herauszufinden (nehmen wir an, Sie erhalten das Bild von einer Netzwerkressource und Sie kennen die Größe nicht, was sehr wichtig sein könnte, wenn Sie rechnen wollen sein Seitenverhältnis).

    
user3621841 05.04.2016, 20:57
quelle

3 Antworten

5

Meine Antwort auf AKTUALISIERT Teil der Frage:

%Vor%

wo:

%Vor%

Diese sollten proportional zur Gerätebreite und -höhe sein, die Sie erhalten mit:

%Vor%

Und wenn Sie Breite / Höhe als Prozentsätze in Stilen erhalten möchten, definieren Sie einfach z. B.:

%Vor%     
zvona 06.04.2016 08:13
quelle
3

Das ist, was bei mir mit dem letzten reaktiven nativen 0.37 funktionierte:

%Vor%     
ragamufin 13.11.2016 21:44
quelle
1

"Enthalten" passt die Größe des Bildes nur an, wenn die Bildgröße größer als der Container ist, in den Sie es einfügen möchten. In diesem Fall ist Ihr Container der Vollbildmodus. Das Bild, das Sie über die URL laden, ist viel kleiner, da es nur 53 mal 77 Pixel groß ist. Daher wird die Größe nicht geändert.

Ich denke, "Cover" sollte tun, was Sie erreichen wollen. Aufgrund der Größe des Bildes sieht es jedoch nicht sehr schön aus, wenn es so vergrößert wird. Hier ein Beispiel: Ссылка

    
Frederick Motte 05.04.2016 21:13
quelle