Рубрики
Без рубрики

Как разработать, как imessage, как пузырь чата в реактивный

Будьте ли вы вентилятор Apple или нет, вы, вероятно, согласитесь, что Apple, конечно, имеет новаторский интерфейс. И Imessage – это определенно важная часть этого дизайна. Изогнутая стрелка – это то, что я всегда очень любил и хотел реплицироваться в течение длительного времени. После

Будьте ли вы вентилятор Apple или нет, вы, вероятно, согласитесь, что Apple, конечно, имеет новаторский интерфейс. И Imessage – это определенно важная часть этого дизайна.

Изогнутая стрелка – это то, что я всегда очень любил и хотел реплицироваться в течение длительного времени.

После многих испытаний и ошибок я наконец смог найти обходной путь для построения аналогичной версии пузыря чата IMessage. В этой статье я возьму вас через шаги, необходимые для создания пузыря чата, который выглядит как imessage Apple.

Если вы создаете приложение чата или намереваясь отображать информацию в виде сообщения, я определенно рекомендую вам попробовать этот стиль, так как он заставляет ваше приложение выглядеть круто и профессионально.

Предварительные условия

Эта статья предполагает, что вы знаете основы:

  • Jsx.
  • Реагировать на родной
  • HTML & CSS.

Что такое пузырь чата?

Пузырь чата в основном контейнер, который удерживает текст. Пузыри чата в основном используются в приложениях мгновенного обмена сообщениями для эффективного отображения журналов чата.

Обычный метод заключается в том, что отправленные сообщения отображаются на правой стороне экрана, и полученные сообщения отображаются слева, с разными цветами, используемыми для дифференцировки между отправленными и полученными сообщениями (ыми).

Большинство приложений обмена сообщениями имеют базовый пузырь чата, который является регулярным контейнером с закругленными углами. Основным дифференцирующим фактором между другими приложениями и IMESSAGE является наличие небольшого изогнутого стрелки, закрепляя текстовый контейнер, который выглядит так:

Как построить пузырь чата, который выглядит как imessage

Если мы смотрим на вышеуказанное изображение тщательно, мы видим, что iMessage Chat Bubble – это сочетание обычного пузыря чата с добавленной стрелкой в углу.

Основная задача заключается в привязке стрелки в текстовый контейнер.

Прежде чем напрямую прыгать в код, я бы хотел, чтобы вы узнали, как создается этот элемент стрелка, подобный и добавленному.

Во-первых, проверить Это Код, который показывает, как реализовать эту стрелку, используя HTML & CSS. Ниже приведен свой фрагмент кода.

p {
  max-width: 255px;
  word-wrap: break-word;
  margin-bottom: 12px;
  line-height: 24px;
  position: relative;
	padding: 10px 20px;
  border-radius: 25px;
  
  &:before, &:after {
    content: "";
		position: absolute;
    bottom: 0;
    height: 25px;
  }
}

.from-me {
	color: white; 
	background: #0B93F6;
	align-self: flex-end;
		
	&:before {
		right: -7px;
    width: 20px;
    background-color: #0B93F6;
		border-bottom-left-radius: 16px 14px;
	}

	&:after {
		right: -26px;
    width: 26px;
    background-color: white;
		border-bottom-left-radius: 10px;
	}
}
.from-them {
	background: #E5E5EA;
	color: black;
  align-self: flex-start;
		
	&:before {
		left: -7px;
    width: 20px;
    background-color: #E5E5EA;
		border-bottom-right-radius: 16px;
	}

	&:after {
		left: -26px;
    width: 26px;
    background-color: white;
		border-bottom-right-radius: 10px;
	}
}

Если вы просто просматриваете прямо через код, это может показаться довольно ужасно. Итак, давайте сломаемся на атомном уровне и позже клей все обратно вместе.

< P> Тег включает в себя ограничения стиля, такие как маржинальные днище, позиция, прокладки и так далее. Обратите внимание, что используется максимальная ширина здесь, составляет 255px, что является статическим значением. Но мы будем использовать динамический подход, поскольку пузыри чата должны быть отзывчивыми по различным размерам экрана.

&: до и &: после в пределах

Стиль определяет два элемента без содержания в нем. Они расположены абсолютны в отношении

ярлык (Текстовый контейнер) и размещен внизу. У них высота 25px (высота стрелки).

Идти дальше, . из-моеги (Отправленные сообщения) Стиль определяет, что текст – белый, фон синий (# 0B936F), и что он размещен на правой стороне экрана (Align-Self: Flex-End).

Теперь приходит важная часть – расширение &: до и &: после , который является фактической реализацией стрелки.

&: до имеет ширину 20 пикселей и размещена на 7 пикселей отрицательно справа. Он имеет радиус нижнего левого в левом нижнем углу 16px, который придает изогнутую стрелку.

Точно так же &: после имеет ширину 26 пикселей и размещена на 26 пикселей отрицательно справа. С -7px> -26px, &: после размещается правая сторона &: до элемент и частично перекрывает его.

Если вы все еще чувствуете себя смущенным, не волнуйтесь – просто обратитесь к изображениям ниже, чтобы получить более четкое понимание того, о чем я говорил.

Таким образом, в основном Arrowhead создается путем перекрытия двух элементов в нижнем углу пузырька чата и регулировка цветов фона, чтобы соответствовать тем из пузыря чата и экрана чата.

Далее впереди перевод CSS и HTML в JSX довольно прост, так как большинство вещей довольно просты.

Как построить реактивную нативную версию

Перед началом я хочу отметить, что это работает лучше всего со счетом, и я рекомендую использовать его, а не другие компоненты или функции, такие как карта (в которой не хватало согласованности на разных экранах и устройствах).

Три шагов, которые мы собираемся следовать здесь:

  1. Создать чат пузырь со стрелкой головой
  2. Добавьте стили, чтобы общаться в пузыре и стрелка
  3. Встроить пузырь чата в складке

Так что давайте начнем.

Во-первых, мы создадим пузырь чата со стрелкой, как это:


  
                    
                    {item.text}
  
                      
                      
                      
                    
                    
                    



//Recevied Message
      
  
                    
                      
                       {item.text}
                      
  
                      
                      
                    
                    
                    
                    
             

Внешняя <Просмотр> Тег действует как тег «P» по сравнению с HTML-версией. Остальные два <Просмотр> Теги действуют как &: до и &: после Отказ

Далее мы добавим стили в пузырь чата и стрелка, как это:

const styles = StyleSheet.create({
rightArrow: {
  position: "absolute",
  backgroundColor: "#0078fe",
  //backgroundColor:"red",
  width: 20,
  height: 25,
  bottom: 0,
  borderBottomLeftRadius: 25,
  right: -10
},

rightArrowOverlap: {
  position: "absolute",
  backgroundColor: "#eeeeee",
  //backgroundColor:"green",
  width: 20,
  height: 35,
  bottom: -6,
  borderBottomLeftRadius: 18,
  right: -20

},

/*Arrow head for recevied messages*/
leftArrow: {
    position: "absolute",
    backgroundColor: "#dedede",
    //backgroundColor:"red",
    width: 20,
    height: 25,
    bottom: 0,
    borderBottomRightRadius: 25,
    left: -10
},

leftArrowOverlap: {
    position: "absolute",
    backgroundColor: "#eeeeee",
    //backgroundColor:"green",
    width: 20,
    height: 35,
    bottom: -6,
    borderBottomRightRadius: 18,
    left: -20

},
})

Тогда мы встраиваем его в список:

 (this.FlatListRef = ref)} // assign the flatlist's ref to your component's FlatListRef...
      
        
        renderItem = {({item,index})=>{

          rowId={index}
         
            if (SENT_MESSAGE) { //change as per your code logic

          
              
                return (
    
                  
  
                    
                     {item.text}
  
                      
  
                      
                      
                    
                    
                    
                  
                )

              
              
              
            } else {

              
                return (
                  
  
                    
                      
                       {item.text}
                      
  
                      
                      
                    
                    
                    
                  
                )
              
              
            }
            
          

        }
        
        keyExtractor={(item,index)=>index.toString()}
        />

Такие значения, как Borderradius, прокладки, маржа, и backgroundcolor являются произвольными значениями и могут быть изменены, если хотите. Так что не стесняйтесь играть и делайте эти изменения, чтобы наилучшим образом соответствовать вашим требованиям.

Результат вышеуказанного кода выглядит так:

Выглядит круто, не так ли? 😉

Заключение

Поздравляю! Вы построили пузырь чата, который выглядит так же, как на одном использовании iMessage.

Я надеюсь, что вы нашли эту статью полезную. Если это так, поделитесь этим с друзьями и коллегами.

Все еще есть вопросы? Не стесняйтесь связаться со мной, и я отвечу вам как можно скорее.

Вы также можете связаться со мной на LinkedIn / Instagram Отказ

Оригинал: “https://www.freecodecamp.org/news/design-imessage-like-chat-bubble-react-native/”