Всем здравствуйте! Я надеюсь, что у вас все хорошо, поэтому через долгое время я собираюсь начать вести блог о представлении аксессуаров. Если вы знакомы с концепцией вспомогательного представления, вы можете пропустить вводную часть и сразу перейти к практической части ее реализации, и снова, если вы уже реализовали ее в приложениях для чата, вы можете прокомментировать ниже, чтобы попробовать лучший подход. из.
Введение:
Я думаю, вы все используете приложения для чата, такие как Whatsapp или Facebook Messenger. Итак, нет сомнений в том, что вы уже видели вид аксессуаров, но, возможно, не знали, что я
Если вы используете приложения для обмена мгновенными сообщениями, такие как Whatsapp и Facebook Messenger, вы уже видели представление «Аксессуары», хотя, возможно, не знали, что оно так называется.
Таким образом, область, в которой вы пишете сообщение, чтобы отправить его своему контакту, в большинстве случаев является вспомогательным представлением в приложениях для обмена мгновенными сообщениями.
Техническая точка зрения:
Присоединение пользовательского представления к представлению ввода, поставляемому системой, т.е. клавиатура является дополнительным представлением.
Альтернативный способ ввода в приложение чата - разместить представление внизу контроллера представления и изменить его нижнее ограничение на высоту клавиатуры, что не является хорошим подходом для реализации пользовательского интерфейса чата.
Давайте углубимся в практический рецепт 🥙🍗🍤🍽
Итак, как вы все знаете, начните с создания проекта Xcode. Назовите его как хотите и присвойте ему отличный идентификатор Bundle. После этого воспользуйтесь библиотекой GrowingTextView, которая поможет автоматически задать значение высоты текста в textView.
if knowCocoaPods { pod ‘GrowingTextView’ } else { //Link: https://cocoapods.org/ }
Теперь вставьте tableview внутри viewController, как на следующем изображении:
Теперь создайте новый файл типа UIView (файл .xib) и назовите его ChatAccessory.
и выберите представление xib, перейдите в инспектор атрибутов и измените его размер на произвольный, чтобы вы могли изменить его размер по своему усмотрению.
Теперь создайте представление для ввода текста, как в Whatsapp или Facebook для отправки сообщений. Я собираюсь разработать простой дизайн следующим образом:
Перетащите текстовое представление внутри ChatAccessory View и дайте ему собственный класс GrowingTextView.
а затем перетащите UIButton и примените ограничения к кнопке, например
трейлинг = 0, нижний = 0, высота = 56 (не применяйте верхнее ограничение для просмотра)
затем примените ограничения к текстовому представлению, такие как ведущий = 16, нижний = 8, верхний = 8 и конечный пробел к UIButton из 8
Затем мы должны указать минимальную и максимальную высоту текстовому представлению через инспектор атрибутов.
Обеспечьте высоту кнопки = 56 = минимальная высота аксессуара
textview мин. height = 56- (верхнее ограничение textview + нижнее ограничение textview)
textview мин. высота = 56- (8 + 8) = 40
textview макс. height = 128 (как хотите)
аксессуар вид макс. height = textViewMaxHeight + (верхнее ограничение textview + нижнее ограничение textview)
аксессуар вид макс. высота = 128 + (8 + 8) = 144
Теперь создайте новый .swift ChatAccessory.swift и класс с именем ChatAccessory, расширенный до класса UIView, и присвойте класс владельца файла ChatAccessory.xib
Теперь просто создайте выходы для текстового представления и действия кнопки внутри класса ChatAccessory.
Теперь мы собираемся создать собственный класс для нашей таблицы, который мы вставили в наш контроллер представления ChatTable.swift, расширенный до UITableView и передав этот класс tableview внутри нашего контроллера представления. Теперь мы воспользуемся нашим ChatAccessory внутри, чтобы сделать его входным аксессуаром. Не забудьте указать высоту рамки для аксессуаров чата = макс. высота аксессуара, которую мы вычислили ранее, то есть 144. Добавьте наблюдателей клавиатуры, чтобы настроить вставку нижнего содержимого табличного представления в соответствии с высотой клавиатуры, и на свойстве table клавиатуры отключите интерактивно из инспектора атрибутов раскадровки для плавного UX во время прокрутки нижнего содержимого содержимого.
Наконец, вставьте несколько ячеек внутри таблицы, сделайте вывод представления таблицы в контроллере представления и в viewDidLoad () UIViewController напишите
tableViewOutlet.becomeFirstResponder()
Просмотреть фрагмент кода контроллера:
Теперь вы можете запустить свой код на устройстве или в симуляторе. а вот выходной образец.
На приведенных выше снимках экрана высота дополнительного вида динамически изменяется в соответствии с текстом в текстовом представлении.
Примечание: - если вы хотите представить какой-либо UIAlertController или какое-либо представление в окне ChatViewController, обязательно сначала уволите первого респондента textview внутри accessoryView.
Ссылка на репозиторий Github: - https://github.com/SandeepSpider811/ChatAccessoryView
Если вы нашли эту статью полезной, похлопайте по ней и поделитесь.
Мирные парни 👋 👋👋