Swiftui Обертывание uiscrollview in uiviewControllerRepresentable - как правильно вставить полос прокрутки?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Swiftui Обертывание uiscrollview in uiviewControllerRepresentable - как правильно вставить полос прокрутки?

Сообщение Anonymous »

Swiftui scrollview не имеет некоторых функций, которые мне нужны, и поэтому я создал пользовательский myscrollview на основе uiscrollview , завернутый в UiviewControllerRepresentable . Хотя это работает в основном нормально, полосы прокрутки не расположены правильно, когда .IgnoresAvearea () устанавливается на myscrollview . Что -то не так с моим кодом или это какая -то ошибка в Swiftui? Как это можно решить?var body: some View {
VStack {
Text("Some Header Content")

MyScrollView {
VStack {
ForEach(0..
В этой настройке прокрутка прокрутки не заканчивается в верхней части Scrollview, а несколько пикселей ниже. Это не тот случай, когда текст («Некоторый контент заголовка») или .ignoressaFearea () удаляется. Тем не менее, мне нужен заголовок, и безопасная область следует игнорировать ...
Есть ли что -то не так с тем, как uiscrollview используется/позиционируется в моем myscrollview ? Правильная ли общая реализация myscrollview или я делаю что -то не так?
struct MyScrollView: UIViewControllerRepresentable {
let content: Content

init(@ViewBuilder content: () -> Content) {
self.content = content()
}

func makeUIViewController(context: Context) -> UIViewController {
let scrollViewVC = UIViewController()
scrollViewVC.view.backgroundColor = .clear

let scrollView = UIScrollView()
scrollView.backgroundColor = .clear

let contentVC = UIHostingController(rootView: self.content)
contentVC.view.backgroundColor = .clear

context.coordinator.contentVC = contentVC
context.coordinator.scrollView = scrollView

scrollView.translatesAutoresizingMaskIntoConstraints = false
scrollViewVC.view.addSubview(scrollView)

NSLayoutConstraint.activate([
scrollView.topAnchor.constraint(equalTo: scrollViewVC.view.topAnchor),
scrollView.bottomAnchor.constraint(equalTo: scrollViewVC.view.bottomAnchor),
scrollView.leadingAnchor.constraint(equalTo: scrollViewVC.view.leadingAnchor),
scrollView.trailingAnchor.constraint(equalTo: scrollViewVC.view.trailingAnchor)
])

contentVC.willMove(toParent: scrollViewVC)
scrollViewVC.addChild(contentVC)

contentVC.view.translatesAutoresizingMaskIntoConstraints = false
scrollView.addSubview(contentVC.view)
NSLayoutConstraint.activate([
contentVC.view.topAnchor.constraint(equalTo: scrollView.contentLayoutGuide.topAnchor),
contentVC.view.bottomAnchor.constraint(equalTo: scrollView.contentLayoutGuide.bottomAnchor),
contentVC.view.leadingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.leadingAnchor),
contentVC.view.trailingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.trailingAnchor),
contentVC.view.widthAnchor.constraint(equalTo: scrollView.frameLayoutGuide.widthAnchor)
])

contentVC.didMove(toParent: scrollViewVC)

return scrollViewVC
}

func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
context.coordinator.contentVC?.rootView = content
}

func makeCoordinator() -> Coordinator {
return Coordinator()
}

class Coordinator {
var contentVC: UIHostingController?
var scrollView: UIScrollView?

init() {
//...
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... o-correctl
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Uiscrollview in uiviewcontrollerRepresentable - UI замораживает, когда контент касается нижней Safearea
    Anonymous » » в форуме IOS
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Uiscrollview in uiviewcontrollerRepresentable - UI замораживает, когда контент касается нижней Safearea
    Anonymous » » в форуме IOS
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как включить обертывание символов Qlabel (не обертывание слов) в Qwidget C ++?
    Anonymous » » в форуме C++
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как включить обертывание символов Qlabel (не обертывание слов) в Qwidget C ++?
    Anonymous » » в форуме C++
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Как включить обертывание символов Qlabel (не обертывание слов) в Qwidget C ++?
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»