💻
React Native
  • 👨‍💻Full-Stack Web Developer
  • 📚Теорія
    • 1️⃣Налаштування робочого середовища
      • Вступ
      • Налаштування середовища розробки
      • Перший проект
      • Налаштування емуляції Android (Android Studio + JDK)
      • Налаштування емуляції Iphone (Xcode)
      • Запуск проекту на віртуальних пристроях
      • Expo Snack
    • 2️⃣Верстка і стилізація
      • Функціональні та класові компоненти
      • Базові компоненти
      • Фундаментальні концепції React в React Native
      • Стилізація компонентів
      • Стилізація залежно від платформи
      • Кольори
      • Зображення
      • Векторна графіка
      • Розташування компонентів
      • Робота зі шрифтами
      • Колекції даних
      • Дебаг застосунку
    • 3️⃣Обробка подій
      • Обробка подій
      • Обробка текстових інпутів
      • Інпути в фокусі
      • Форма для збору даних
      • Робота з клавіатурою
      • Перехоплення подій
    • 4️⃣Навігація
      • Підключення навігації
      • Перемикання екранів
      • Передача параметрів між екранами
      • Хедер екрану
      • Вкладена навігація
      • Нижня навігація
    • 5️⃣Нативні компоненти
      • Камера
      • Мапи
      • Геолокація
    • 👷Практика
      • 1️⃣Завдання 1
      • 2️⃣Завдання 2
      • 3️⃣Завдання 3
      • 4️⃣Завдання 4
      • 5️⃣Завдання 5
      • 6️⃣Завдання 6
      • 7️⃣Завдання 7
    • Додаткові покликання
  • Про мене
    • Про мене
Powered by GitBook
On this page
  • Контентні зображення
  • Локальні зображення
  • Мережеві зображення
  • Фонові зображення
  • Завантаження зображень за щільністю пікселів
  • Завантаження зображення за умовою
  1. Теорія
  2. Верстка і стилізація

Зображення

PreviousКольориNextВекторна графіка

Last updated 1 year ago

У React Native є можливість використовувати зображення як:

Контентні зображення

Для розміщення у застосунку зображення використовуємо базовий компонент <Image /> і проп sourse, в якому вказуємо посилання на зображення.

Локальні зображення

Для імпорту зображення в компонент використовуємо require/import.

<Image source={require('./my-image.png')} />

Або імпортуємо згори файлу компонента і звертаємося в потрібному місці програми.

import MyImage from './my-image.png'


<Image source={MyImage}/>

Мережеві зображення

Для підверстання мережевого зображення використовують обʼєкт із властивістю uri. Для нелокальних зображень з мережі обовʼязково потрібно вказувати розміри.

// Добре
<Image source={{uri: 'https://reactjs.org/logo-og.png'}}
       style={{width: 400, height: 400}} />

// Погано
<Image source={{uri: 'https://reactjs.org/logo-og.png'}} />

Фонові зображення

Для застосування фонового зображення використовують базовий компонент <ImageBackground /> і пропси sourse, style та resizeMode. Весь контент при цьому вкладається всередину цього компоненту.

 <ImageBackground 
   source={...} 
   style={{width: '100%', height: '100%'}} 
   resizeMode="cover"
 >
    <Text>Inside</Text>
  </ImageBackground>

Користуйтеся паттерном, що зазначений вище.

ImageBackground - це компонент який за допомогою position: 'absolute' розтягнуто всередині компонента View. Цей компонент має проп source (аналогічний, як і в Image), у якому вказують адресу зображення. Стилі для зображення додають через проп imageStyle, а для View - через звичайний проп style. Детальніше дивіться у документації. Код в бібліотеці React Native:

return (
      <View
        accessibilityIgnoresInvertColors={true}
        importantForAccessibility={importantForAccessibility}
        style={style}
        ref={this._captureRef}>
        <Image
          {...props}
          importantForAccessibility={importantForAccessibility}
          style={[
            StyleSheet.absoluteFill,
            {
              width: flattenedStyle?.width,
              height: flattenedStyle?.height,
            },
            imageStyle,
          ]}
          ref={imageRef}
        />
        {children}
      </View>
    );

Завантаження зображень за щільністю пікселів

Припустимо ми маємо таку структуру розміщення кнопки та зображення для неї (міститься всередині кнопки).

.
├── button.js
└── img
    ├── check.png
    ├── check@2x.png
    └── check@3x.png
<Image source={require('./img/check.png')} />

В такому разі, підвантажиться найкраще по якості зображення для пристрою на якому відкриється застосунок. Наприклад, check@2x.png використовуватиметься на iPhone 7, а check@3x.png — на iPhone 7 Plus або Nexus 5.

Завантаження зображення за умовою

При завантаженні зображення за умовою, повну адресу на зображення треба спочатку винести в змінну і потім робити require. І в жодному разі не використовувати конкатенацію всередині require.

// Добре
<Image source={require('./my-icon.png')} />;

// Погано
const icon = this.props.active
  ? 'my-icon-active'
  : 'my-icon-inactive';
<Image source={require('./' + icon + '.png')} />;

// Добре
const icon = this.props.active
  ? require('./my-icon-active.png')
  : require('./my-icon-inactive.png');
<Image source={icon} />;

Посилання на офіційну документацію:

Але, щоб зрозуміти як цей компонент працює, можна звернутися до його в бібліотеці React Native. Розберемо його.

📚
2️⃣
коду
Зображення
Image
ImageBackground
Image Style Prop
Контентні зображення
Фонові зображення