IMUIMessageCollectionView
IMUIMessageCollectionView — это вид чата, представляющий собой список сообщений, который используется для отображения различных типов сообщений и поддерживает богатые возможности расширения. Если расширение не используется, применяется стиль по умолчанию.
Установка
CocoaPods (рекомендуется)
# Для последней версии в CocoaPods
pod ‘AuroraIMUI'
Ручная интеграция
Скопируйте папку IMUI в свой проект.
Примечание: убедитесь, что ваш файл Info.plist содержит разрешения для камеры, микрофона и Photo Library.
Использование
Чтобы использовать IMUIMessageCollectionView, необходимо выполнить несколько простых шагов.
Пример кода:
@IBOutlet weak var messageCollectionView: IMUIMessageCollectionView!
override func viewDidLoad() {
super.viewDidLoad()
self.messageCollectionView.delegate = self
}
// MARK - IMUIMessageMessageCollectionViewDelegate
func messageCollectionView(_: UICollectionView, forItemAt: IndexPath, model: IMUIMessageModelProtocol) {}
func messageCollectionView(didTapMessageBubbleInCell: UICollectionViewCell, model: IMUIMessageModelProtocol) {}
func messageCollectionView(didTapHeaderImageInCell: UICollectionViewCell, model: IMUIMessageModelProtocol)
func messageCollectionView(_: UICollectionView, willDisplayMessageCell: UICollectionViewCell, forItemAt: IndexPath, model: IMUIMessageModelProtocol) {}
func messageCollectionView(_: UICollectionView, didEndDisplaying: UICollectionViewCell, forItemAt: IndexPath, model: IMUIMessageModelProtocol) {}
func messageCollectionView(_ willBeginDragging: UICollectionView){}
Пример кода:
protocol IMUIMessageModelProtocol {
@request
var msgId: String { get }
var fromUser: IMUIUserProtocol { get }
var layout: IMUIMessageCellLayoutProtocal { get }
// Сообщение является исходящим сообщением
var isOutGoing: Bool { get }
@optional
// Время сообщения
var timeString: String { get }
// Текстовое сообщение в виде строки
func text() -> String
// Путь к файлу мультимедиа
func mediaFilePath() -> String
// Продолжительность аудио- или видеофайла
var duration: CGFloat { get }
// Изображение пузыря сообщения
var resizeBubbleImage: UIImage { get }
}
Пример кода:
@request
func userId() -> String
func displayName() -> String
func Avatar() -> UIImage
}
Управление данными
Добавьте новое сообщение.
messageCollectionView.appendMessage(with message: IMUIMessageModel)
messageCollectionView.insertMessage(with message: IMUIMessageModel)
messageCollectionView.insertMessages(with messages:[IMUIMessageModel])
Пользовательское оформление
При создании объекта Message необходимо указать информацию о макете. Если она не указана, будет использоваться макет по умолчанию IMUIMessageCellLayout. Если требуется лишь немного изменить элементы внутри ячейки сообщения на основе макета по умолчанию, предоставляются простые параметры конфигурации.
Пример параметров конфигурации:
Если параметры конфигурации макета по умолчанию удовлетворяют требованиям, можно не создавать собственный макет в методе конструирования, а указать пользовательский макет, реализовав протокол IMUIMessageCellLayoutProtocal. Также можно наследовать класс IMUIMessageCellLayout и переопределить методы в соответствии с требованиями. Например:
Пример пользовательского макета:
class MyMessageCellLayout: IMUIMessageCellLayout {
override init(isOutGoingMessage: Bool, isNeedShowTime: Bool, bubbleContentSize: CGSize) {
super.init(isOutGoingMessage: isOutGoingMessage, isNeedShowTime: isNeedShowTime, bubbleContentSize: bubbleContentSize)
}
override var bubbleContentInset: UIEdgeInsets {
if isOutGoingMessage {
return UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 15)
} else {
return UIEdgeInsets(top: 10, left: 15, bottom: 10, right: 10)
}
} } Планы на будущее
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )