Изображения
Класс ChatImages содержит иконки и изображения интерфейса чата. По умолчанию большинство иконок — SF Symbols; chatBubble, sentStatusImage и readStatusImage используют растровые ресурсы из бандла SDK. Заменить любое значение можно на SF Symbol, кастомное изображение из своего бандла или готовый UIImage через конструкторы ChatImage.
Доступные изображения
Поиск
| Переменная | Тип | Назначение |
|---|---|---|
searchButtonImage | SF Symbol | Иконка поиска |
searchNotFoundPlaceholderImage | SF Symbol | Изображение для «ничего не найдено» |
Навигация
| Переменная | Тип | Назначение |
|---|---|---|
backButtonImage | SF Symbol | Иконка кнопки «Назад». В 5.x не применяется — см. Известные ограничения |
nextButtonImage | SF Symbol | Иконка кнопки «Вперёд» |
keyboardShowImage | SF Symbol | Показ клавиатуры |
keyboardHideImage | SF Symbol | Скрытие клавиатуры |
Отправка сообщений
| Переменная | Тип | Назначение |
|---|---|---|
sendButtonImage | SF Symbol | Отправить сообщение |
attachButtonImage | SF Symbol | Прикрепить файл |
Плейсхолдеры
| Переменная | Тип | Назначение |
|---|---|---|
emptyChatPlaceholderImage | SF Symbol | Чат пустой |
errorPlaceholderImage | SF Symbol | Ошибка загрузки чата |
Реакции
| Переменная | Тип | Назначение |
|---|---|---|
likeEmptyImage | SF Symbol | Неактивный лайк |
likeFullImage | SF Symbol | Активный лайк |
dislikeEmptyImage | SF Symbol | Неактивный дизлайк |
dislikeFullImage | SF Symbol | Активный дизлайк |
Рейтинг
| Переменная | Тип | Назначение |
|---|---|---|
starRatingEmptyImage | SF Symbol | Неактивная звезда |
starRatingFullImage | SF Symbol | Активная звезда |
Файлы и медиа
| Переменная | Тип | Назначение |
|---|---|---|
fileImage | SF Symbol | Файл |
chatBubble | Кастомное | Маска сообщения |
Прокрутка
| Переменная | Тип | Назначение |
|---|---|---|
scrollToTopImage | SF Symbol | Прокрутка наверх |
scrollToBottomImage | SF Symbol | Прокрутка вниз |
Аватары
| Переменная | Тип | Назначение |
|---|---|---|
avatarPlaceholderImage | SF Symbol | Плейсхолдер аватара |
Меню и действия
| Переменная | Тип | Назначение |
|---|---|---|
closeButtonImage | SF Symbol | Закрыть |
menuCopyImage | SF Symbol | Скопировать |
menuQuoteImage | SF Symbol | Цитировать |
Голосовые сообщения
| Переменная | Тип | Назначение |
|---|---|---|
voiceButtonImage | SF Symbol | Запись голосового |
voiceSendButtonImage | SF Symbol | Отправка голосового |
voicePlayImage | SF Symbol | Воспроизведение |
voicePauseImage | SF Symbol | Пауза |
Статусы сообщений
| Переменная | Тип | Назначение |
|---|---|---|
sentStatusImage | Кастомное | Сообщение отправлено |
pendingStatusImage | SF Symbol | Сообщение в процессе |
readStatusImage | Кастомное | Сообщение прочитано |
sentStatusImage, pendingStatusImage, readStatusImage инициализируются с tintColor: ChatColors().positive при первом обращении. При замене изображения через свойства ChatImages укажите нужный tintColor явно — кастомные цвета из ChatComponents.colors к этим трём токенам не применяются автоматически.
Ошибки и уведомления
| Переменная | Тип | Назначение |
|---|---|---|
errorInfoImage | SF Symbol | Иконка информации об ошибке |
errorAlertImage | SF Symbol | Иконка предупреждения об ошибке. В 5.x не применяется — см. Известные ограничения |
errorShieldImage | SF Symbol | Иконка ошибки типа файла. В 5.x не применяется — см. Известные ограничения |
scheduleImage | SF Symbol | Иконка расписания/нерабочего времени |
editImage | SF 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 | Получено / Доставлено | ChatMessageStyle.deliveredStatusImage (не в ChatImages). По умолчанию читает текущее значение sentStatusImage; для отдельной иконки задайте deliveredStatusImage явно |
icon/state-error | Ошибка отправки | errorInfoImage |
icon/state-sending | В процессе отправки | pendingStatusImage |
icon/state-edit | Редактирование | editImage |
icon/play | Воспроизведение аудио | voicePlayImage |
icon/photos | Фотогалерея | Не настраивается публично — используется иконка SDK |
icon/camera | Камера | Не настраивается публично — используется иконка SDK |
icon-spinner | Спиннер загрузки | Иконка не настраивается (системный UIActivityIndicatorView); цвет — через LoadingIndicatorStyle.indicatorColor |
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 (ChatMenuStyle — только текст и поведение, не иконки) |
icon/search | Поиск | searchButtonImage |
icon/delete | Удаление | Через контекстное меню |
icon/copy | Копировать | menuCopyImage |
icon/record | Запись голоса | voiceButtonImage |
icon/attach | Прикрепить файл | attachButtonImage |
Класс ChatImage
Конструкторы
/// 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)
Пример использования
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
Builder-паттерн
Для группировки нескольких переопределений в одно выражение используйте ChatImage.build(configure:) — аналогично ChatColors.build и ChatTypography.build. Метод объявлен на ChatImage, но возвращает ChatImages.
static func build(configure: (ChatImages) -> Void) -> ChatImages
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
configure | (ChatImages) -> Void | Да | Замыкание, в котором мутируете нужные свойства создаваемого ChatImages |
Пример:
let images = ChatImage.build { images in
images.sendButtonImage = ChatImage(system: "paperplane.fill", tintColor: .white)
images.attachButtonImage = ChatImage(system: "plus.circle")
images.avatarPlaceholderImage = ChatImage(system: "person.circle.fill")
}
let theme = ChatTheme(images: images)
chatCenterSDK.theme = theme