【问题标题】:How to wrap a horizontal UIScrollView so it works for SwiftUI如何包装水平 UIScrollView 使其适用于 SwiftUI
【发布时间】:2020-04-05 01:09:16
【问题描述】:

我是 SwiftUI 新手,我需要在 SwiftUI 应用程序中使用水平 UIScrollView,但是当我尝试包装它时,我无法让它正确呈现视图。我放在里面的视图就消失了。有没有办法将包装好的 UIScrollView 修复为仅水平滚动?

这是我的尝试。

struct CustomScrollView<Content>: UIViewRepresentable where Content : View {
    let content: () -> Content

    init(proxy: ListScrollingProxy, @ViewBuilder content: @escaping () -> Content) {
        self.content = content

    }

    func makeUIView(context: Context) -> UIView {
         let hosting = UIHostingController(rootView: content())
               let width = UIScreen.main.bounds.width
               let size = hosting.view.sizeThatFits(CGSize(width: width, height: CGFloat.greatestFiniteMagnitude))
               hosting.view.frame = CGRect(x: 0, y: 0, width: width, height: size.height)
               let scrollview = UIScrollView()


                scrollview.showsVerticalScrollIndicator = false
                scrollview.showsHorizontalScrollIndicator = false

               scrollview.addSubview(hosting.view)
               scrollview.contentSize = CGSize(width: width, height: size.height)

               return scrollview
    }

    func updateUIView(_ uiView: UIView, context: Context) {

       }
}

我们将不胜感激。

【问题讨论】:

  • In this post你可以找到已经解决的垂直滚动UIScrollView集成,所以你只需要为水平滚动正确配置它。

标签: ios swift swiftui


【解决方案1】:

在我的例子中,我包装的视图包含一个 WKWebView。所以我关闭了滚动,因为 SwiftUI 视图处理滚动:

wrappedView.webView.scrollView.isScrollEnabled = false

此外,您需要确保您的视图返回正确的 intrinsicContentSize 值 - 视图的完整大小,因此不需要滚动。

【讨论】:

    猜你喜欢
    • 2018-10-26
    • 2013-01-18
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    相关资源
    最近更新 更多