Перейти к основному содержимому
Версия: 5.8.2

Изображения

Класс ChatImages предоставляет набор предопределённых изображений и иконок, используемых в интерфейсе чата. Поддерживает как SF Symbols, так и кастомные изображения из бандла приложения.

к сведению

Для упрощения настройки и уменьшения размера SDK в качестве иконок по умолчанию используются SF Symbols

Быстрая замена иконки
// SF Symbol
images.sendButtonImage = ChatImage(system: "paperplane.fill", tintColor: .white)

// Кастомное изображение из бандла приложения
images.attachButtonImage = ChatImage(named: "my_icon", bundle: .main, tintColor: .systemBlue)

// Готовый UIImage
images.avatarPlaceholderImage = ChatImage(image: UIImage(named: "avatar")!, tintColor: .gray)

Полный список SF Symbols доступен в приложении SF Symbols от Apple.

Описание

ChatImages — это базовый класс, предоставляющий унифицированный доступ к различным иконкам и изображениям приложения. Все изображения реализованы через класс ChatImage, который поддерживает:

  • SF Symbols с возможностью указания размера и цвета
  • Кастомные изображения из ресурсов SDK
  • Унифицированное управление цветом заливки (tintColor)

Этот подход обеспечивает консистентность UI и упрощает темизацию.


Доступные изображения

Поиск

ПеременнаяТипНазначение
searchButtonImageSF SymbolИконка поиска
searchNotFoundPlaceholderImageSF SymbolИзображение для "ничего не найдено"

Навигация

ПеременнаяТипНазначение
backButtonImageSF SymbolИконка кнопки "Назад"
nextButtonImageSF SymbolИконка кнопки "Вперёд"
keyboardShowImageSF SymbolПоказ клавиатуры
keyboardHideImageSF SymbolСкрытие клавиатуры

Отправка сообщений

ПеременнаяТипНазначение
sendButtonImageSF SymbolОтправить сообщение
attachButtonImageSF SymbolПрикрепить файл

Плейсхолдеры

ПеременнаяТипНазначение
emptyChatPlaceholderImageSF SymbolЧат пустой
errorPlaceholderImageSF SymbolОшибка загрузки чата

Реакции

ПеременнаяТипНазначение
likeEmptyImageSF SymbolНеактивный лайк
likeFullImageSF SymbolАктивный лайк
dislikeEmptyImageSF SymbolНеактивный дизлайк
dislikeFullImageSF SymbolАктивный дизлайк

Рейтинг

ПеременнаяТипНазначение
starRatingEmptyImageSF SymbolНеактивная звезда
starRatingFullImageSF SymbolАктивная звезда

Файлы и медиа

ПеременнаяТипНазначение
fileImageSF SymbolФайл
chatBubbleКастомноеМаска сообщения

Прокрутка

ПеременнаяТипНазначение
scrollToTopImageSF SymbolПрокрутка наверх
scrollToBottomImageSF SymbolПрокрутка вниз

Аватары

ПеременнаяТипНазначение
avatarPlaceholderImageSF SymbolПлейсхолдер аватара

Меню и действия

ПеременнаяТипНазначение
closeButtonImageSF SymbolЗакрыть
menuCopyImageSF SymbolСкопировать
menuQuoteImageSF SymbolЦитировать

Голосовые сообщения

ПеременнаяТипНазначение
voiceButtonImageSF SymbolЗапись голосового
voiceSendButtonImageSF SymbolОтправка голосового
voicePlayImageSF SymbolВоспроизведение
voicePauseImageSF SymbolПауза

Статусы сообщений

ПеременнаяТипНазначение
sentStatusImageКастомноеСообщение отправлено
pendingStatusImageSF SymbolСообщение в процессе
readStatusImageКастомноеСообщение прочитано

Ошибки и уведомления

ПеременнаяТипНазначение
errorInfoImageSF SymbolИконка информации об ошибке
errorAlertImageSF SymbolИконка предупреждения об ошибке
errorShieldImageSF SymbolИконка ошибки типа файла
scheduleImageSF SymbolИконка расписания/нерабочего времени
editImageSF SymbolИконка редактирования

Соответствие Figma и SDK

На странице Foundation → Icons в Figma иконки имеют свою систему именования. Ниже приведено соответствие между именами в Figma и свойствами ChatImages:

Иконка в FigmaОписание (Figma)Свойство SDK
icon/userАватар пользователяavatarPlaceholderImage
icon/star_emptyПустая звезда рейтингаstarRatingEmptyImage
icon/star_halfПоловина звездынет прямого токена (SDK поддерживает только пустую/полную звезду)
icon/star_fullПолная звезда рейтингаstarRatingFullImage
icon/fileДокументfileImage
icon/state-sendОтправленоsentStatusImage
icon/state-receivedПолучено / ДоставленоdeliveredStatusImageChatMessageStyle, не в ChatImages; по умолчанию = sentStatusImage)
icon/state-errorОшибка отправкиerrorInfoImage
icon/state-downloadПовтор при сбое загрузкинет публичного токена в SDK
icon/state-sendingВ процессе отправкиpendingStatusImage
icon/state-editРедактированиеeditImage
icon/playВоспроизведение аудиоvoicePlayImage
icon/photosФотогалереяЧерез chatMenuStyle
icon/cameraКамераЧерез chatMenuStyle
icon-spinnerСпиннер загрузкиЧерез LoadingIndicatorStyle
icon/backКнопка «Назад»backButtonImage
icon/forwardКнопка «Вперёд»nextButtonImage
icon/micМикрофонvoiceButtonImage
icon/citeЦитированиеmenuQuoteImage
icon/cancelЗакрытиеcloseButtonImage
icon/scroll-downПрокрутка внизscrollToBottomImage
icon/arrow-upПрокрутка вверх (к старым)scrollToTopImage
icon/arrow-downПрокрутка вниз (к новым)scrollToBottomImage
icon/calendarРасписаниеscheduleImage
icon/menuКнопка открытия меню вложенийattachButtonImage (кнопка-триггер); chatMenuStyle — стиль панели меню
icon/searchПоискsearchButtonImage
icon/deleteУдалениеЧерез контекстное меню
icon/copyКопироватьmenuCopyImage
icon/recordЗапись голосаvoiceButtonImage
icon/attachПрикрепить файлattachButtonImage

Класс ChatImage

Класс ChatImage представляет собой унифицированную обёртку над UIImage, поддерживающую:

  • SF Symbols
  • Кастомные изображения
  • Настройку цвета (tintColor)
  • Управление размером

Конструкторы

/// SF Symbol
init(system name: String, tintColor: UIColor? = nil)

/// SF Symbol с указанием размера
init(system name: String, size: CGFloat = 14, tintColor: UIColor? = nil)

/// Кастомное изображение (для него нужно указать бандл, в котором оно хранится)
init(named: String,
bundle: Bundle = Bundle(for: ChatImage.self),
tintColor: UIColor? = nil,
renderingMode: UIImage.RenderingMode? = nil)

/// Оборачивание готового UIImage
init(image: UIImage,
tintColor: UIColor? = nil,
renderingMode: UIImage.RenderingMode? = nil)

Пример использования

Актуальный пример можно найти в демо-приложении в MainViewController+Custom.swift.

let images = ChatImages()
images.avatarPlaceholderImage = ChatImage(system: "person.circle.fill", tintColor: .white)
images.sendButtonImage = ChatImage(system: "paperplane.fill")
images.attachButtonImage = ChatImage(system: "plus.circle")

let theme = ChatTheme(images: images)
chatCenterSDK.theme = theme