1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jpush-aurora-imui

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
usage_iOS.md 6.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 04:38 7486689

IMUIMessageCollectionView

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

Установка

CocoaPods (рекомендуется)

# Для последней версии в CocoaPods
pod AuroraIMUI'

Ручная интеграция

Скопируйте папку IMUI в свой проект.

Примечание: убедитесь, что ваш файл Info.plist содержит разрешения для камеры, микрофона и Photo Library.

Использование

Чтобы использовать IMUIMessageCollectionView, необходимо выполнить несколько простых шагов.

  1. Перетащите представление в UIViewController (можно использовать storyboard и xib) и измените класс на IMUIMessageCollectionView.
  2. Реализуйте методы IMUIMessageMessageCollectionViewDelegate.

Пример кода:

@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){}
  1. Создайте объекты сущности.
    • Создайте тип сообщения, реализуя протокол IMUIMessageModelProtocol.

Пример кода:

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 }
}
  • Создайте пользовательский тип, реализуя протокол IMUIUserProtocol.

Пример кода:

@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. Если требуется лишь немного изменить элементы внутри ячейки сообщения на основе макета по умолчанию, предоставляются простые параметры конфигурации.

Пример параметров конфигурации:

  • Установка размера аватара: IMUIMessageCellLayout.avatarSize
  • Смещение аватара относительно ячейки: IMUIMessageCellLayout.avatarOffsetToCell
  • Смещение имени относительно рамки ячейки: IMUIMessageCellLayout.nameLabelFrame
  • Смещение пузыря относительно аватара: IMUIMessageCellLayout.bubbleOffsetToAvatar
  • Ширина ячейки сообщения: IMUIMessageCellLayout.cellWidth
  • Внутренний отступ ячейки: IMUIMessageCellLayout.cellContentInset

Если параметры конфигурации макета по умолчанию удовлетворяют требованиям, можно не создавать собственный макет в методе конструирования, а указать пользовательский макет, реализовав протокол 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)
}

} } Планы на будущее

  • Обновление состояния сообщений
  • Поддержка пользовательских сообщений
  • Анимация сообщений
  • Версия React Native

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/jpush-aurora-imui.git
git@api.gitlife.ru:oschina-mirror/jpush-aurora-imui.git
oschina-mirror
jpush-aurora-imui
jpush-aurora-imui
master