Chciałem dodać obraz pełnoekranowy do widoku, więc piszę ten kod
return (
<View style={styles.container}>
<Image source={require('image!egg')} style={styles.backgroundImage}/>
</View>
)
i zdefiniował styl jako
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
flexDirection: 'column',
},
backgroundImage:{
width:320,
height:480,
}
...
ale w ten sposób jak mam znaleźć rzeczywisty rozmiar ekranu iPhone'a?
Widziałem API, aby uzyskać dostęp do Pixel Density, ale nic o rozmiarze ekranu ...
Dowolny pomysł?
javascript
react-native
talpaz
źródło
źródło
.png
lub.jpg
? Czy można przechowywać obraz tapety w drzewie katalogów aplikacji? A może lepiej użyć czegoś innego?.svg
czy coś?Odpowiedzi:
Możesz użyć
flex: 1
stylizacji na<Image>
elemencie, aby wypełnił cały ekran. Następnie możesz użyć jednego z trybów zmiany rozmiaru obrazu, aby obraz całkowicie wypełnił element:Styl:
Jestem prawie pewien, że możesz pozbyć się
<View>
zawijania obrazu i to zadziała.źródło
backgroundImage:{ justifyContent: 'center', alignItems: 'center', flex: 1, resizeMode: Image.resizeMode.contain, },
DziękujęImage
komponent w pozycji absolutnej,View
aby obraz tła pojawił się za innymi treściami na ekranie.<Image src=...>
jest teraz<Image source=...>
(To zostało wycofane, teraz możesz używać ImageBackground )
Tak to zrobiłem. Główną sprawą było pozbycie się statycznych stałych rozmiarów.
źródło
Image
jest to twój pierwszy zwrócony składnik, czyli kontener. Na początku przypadkowo zagnieździłemImage
wewnątrzView
kontenera.Uwaga: to rozwiązanie jest stare. Zamiast tego zapoznaj się z https://facebook.github.io/react-native/docs/images.html#background-image-via-nesting
Wypróbuj to rozwiązanie. Jest oficjalnie obsługiwany. Właśnie to przetestowałem i działa bez zarzutu.
A jeśli chodzi o używanie go jako obrazu tła, wykonaj następujące czynności.
źródło
alignSelf
iwidth
tutaj?Wypróbowałem kilka z tych odpowiedzi, ale bezskutecznie dla Androida przy użyciu wersji natywnej reagowania = 0.19.0.
Z jakiegoś powodu funkcja resizeMode w moim arkuszu stylów nie działała prawidłowo? Jednak gdy sytlesheet miał
i w tagu Image określiłem resizeMode:
Zadziałało idealnie! Jak wspomniano powyżej, możesz użyć Image.resizeMode.cover lub również zawierać.
Mam nadzieję że to pomoże!
źródło
Aktualizacja z marca 2018 r. Używanie obrazu jest przestarzałe. Użyj ImageBackground
źródło
Na podstawie Braden Rockwell Napier „s odpowiedź , zrobiłem to
BackgroundImage
składnikBackgroundImage.js
someWhereInMyApp.js
źródło
Jeśli chcesz użyć go jako obrazu tła, musisz użyć nowego
<ImageBackground>
komponentu wprowadzonego pod koniec czerwca 2017 w wersji 0.46. Obsługuje zagnieżdżanie, ale<Image>
wkrótce nie będzie.Oto podsumowanie zmian :
źródło
UPDATE to ImageBackground
Ponieważ używanie
<Image />
jako kontenera jest przez pewien czas przestarzałe, we wszystkich odpowiedziach w rzeczywistości brakuje czegoś ważnego. Do właściwego użytku wybierz<ImageBackground />
zstyle
iimageStyle
podpórkę. Zastosuj wszystkie style związane z obrazem doimageStyle
.Na przykład:
https://github.com/facebook/react-native/blob/master/Libraries/Image/ImageBackground.js
źródło
O Boże Wreszcie znalazłem świetny sposób na React-Native V 0.52-RC i native-base:
Twój tag treści powinien wyglądać mniej więcej tak: // ======================================= =======================
A Twój podstawowy styl to: // ========================================== ====================
Świetnie działa przyjaciele ... baw się dobrze
źródło
Od wersji 0.14 ta metoda nie zadziała, więc zbudowałem statyczny komponent, który ułatwi wam zadanie. Możesz po prostu wkleić to lub utworzyć odniesienie jako komponent.
Powinno to nadawać się do ponownego wykorzystania i pozwoli na dodanie dodatkowych stylów i właściwości, tak jakby był to standardowy
<Image />
komponentpo prostu wklej to, a następnie możesz użyć go jak obrazu i powinien pasować do całego rozmiaru widoku, w którym się znajduje (więc jeśli jest to widok z góry, wypełni on ekran.
Kliknij tutaj, aby wyświetlić podgląd obrazu
źródło
Najnowsze na październik 2017 r. (RN> = 0,46)
http://facebook.github.io/react-native/releases/0.49/docs/images.html#background-image-via-nesting
źródło
Aby obsłużyć ten przypadek użycia, możesz użyć
<ImageBackground>
komponentu, który ma takie same właściwości jak<Image>
i dodać do niego wszystkie elementy podrzędne, które chcesz nałożyć na niego.Przykład:
Więcej: ImageBackground | React Native
źródło
źródło
Musisz upewnić się, że obraz ma resizeMode = {Image.resizeMode.contain} lub {Image.resizeMode.stretch} i ustawić szerokość stylu obrazu na null
źródło
Szerokość i wysokość z wartością null nie działają dla mnie, wtedy pomyślałem, że użyję górnej, dolnej, lewej i prawej pozycji i zadziałało. Przykład:
Oraz JSX:
źródło
(RN> = 0,46)
lub możesz użyć ImageBackground
źródło
Najłatwiejszy sposób na wdrożenie tła:
źródło
U mnie to działa dobrze, użyłem ImageBackground do ustawienia obrazu tła:
źródło
jeśli jeszcze tego nie rozwiązałeś, React Native v.0.42.0 ma resizeMode
źródło
Możesz wypróbować na: https://sketch.expo.io/B1EAShDie (z: github.com/Dorian/sketch-reactive-native-apps )
Dokumenty: https://facebook.github.io/react-native/docs/images.html#background-image-via-nesting
źródło
Możesz także użyć swojego obrazu jako kontenera:
źródło
Słyszałem, że muszę używać BackgroundImage, ponieważ w przyszłości nie powinno być możliwości zagnieżdżenia tagu Image. Ale nie mogłem uzyskać BackgroudImage, aby poprawnie wyświetlał moje tło. To, co zrobiłem, to zagnieżdżenie mojego obrazu w tagu Widok i stylizowanie zarówno zewnętrznego widoku, jak i obrazu. Klucze ustawiały szerokość na null i ustawiały resizeMode na „stretch”. Poniżej mój kod:
źródło
Użyj,
<ImageBackground>
jak już powiedział antoine129 . Używanie<Image>
z dziećmi jest teraz przestarzałe.źródło
Kolejne łatwe rozwiązanie:
źródło
Rozwiązałem problem z obrazem tła za pomocą tego kodu.
źródło
ImageBackground może mieć limit
Jeśli chcesz dodać obraz tła w React Native, a także chcesz dodać inne elementy do tego obrazu tła, wykonaj poniższe czynności:
Oto kod, którego używam:
Ciesz się kodowaniem ....
Wynik:
źródło