GOOGLE ADS

среда, 13 апреля 2022 г.

Как сделать автоматическую прокрутку списка SwiftUI?

При добавлении контента в мой ListView я хочу, чтобы он автоматически прокручивался вниз.

Я использую SwiftUI Listи в BindableObjectкачестве контроллера. Новые данные добавляются в список.

List(chatController.messages, id: \.self) { message in
MessageView(message.text, message.isMe)
}

Я хочу, чтобы список прокручивался вниз, когда я добавляю новые данные в список сообщений. Однако мне приходится прокручивать вниз вручную.


Решение проблемы

Обновление: в iOS 14 теперь есть собственный способ сделать это. я так и делаю

 ScrollViewReader { scrollView in
ScrollView(.vertical) {
LazyVStack {
ForEach(notes, id: \.self) { note in
MessageView(note: note)
}
}
.onAppear {
scrollView.scrollTo(notes[notes.endIndex - 1])
}
}
}

Для iOS 13 и ниже вы можете попробовать:

Я обнаружил, что переключение представлений, похоже, работает для меня довольно хорошо. Это запускает ScrollView внизу, и при добавлении новых данных к нему автоматически прокручивается представление вниз.

  • Повернуть крайний вид на 180.rotationEffect(.radians(.pi))

  • Отразите его по вертикальной плоскости.scaleEffect(x: -1, y: 1, anchor:.center)

  • Вы должны будете сделать это и со своими внутренними представлениями, так как теперь все они будут вращаться и переворачиваться. Чтобы перевернуть их обратно, сделайте то же самое, что и выше.

    Если вам нужно так много мест, возможно, стоит иметь для этого собственное представление.

    Вы можете попробовать что-то вроде следующего:

    List(chatController.messages, id: \.self) { message in
    MessageView(message.text, message.isMe)
    .rotationEffect(.radians(.pi))
    .scaleEffect(x: -1, y: 1, anchor:.center)
    }
    .rotationEffect(.radians(.pi))
    .scaleEffect(x: -1, y: 1, anchor:.center)

    Вот расширение View, чтобы перевернуть его

    extension View {
    public func flip() -> some View {
    return self
    .rotationEffect(.radians(.pi))
    .scaleEffect(x: -1, y: 1, anchor:.center)
    }
    }

    Комментариев нет:

    Отправить комментарий

    Laravel Datatable addColumn returns ID of one record only

    Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...