问题标签 [uiviewrepresentable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
72 浏览

swift - 如何使用 updateUIView 将绑定值更新到我的视频播放器

我只有一个简单的视频播放器我想更新当前视频但我不知道如何

当绑定值更改 updateUIView 上的 videoURL 打印时,它的工作但没有更改视频,我在 swift 上是新的,并且知道如何更新当前正在播放的视频。

0 投票
1 回答
466 浏览

swiftui - 如何让我的 UIView 在 SwiftUI 中正确调整其内容的大小?

我想使用Yonat Sharon在我的 SwiftUI 视图中编写的很棒的 MultiSegmentPicker。

https://github.com/yonat/MultiSelectSegmentedControl

但是,我并不完全理解 UIViewRepresentable 视图和我的 SwiftUI 视图之间的交互。如何让主机视图控制器将其高度缩小到分段控件的大小?

这是演示页面的调试器视图 - 请注意顶部栏周围的蓝色区域: 在此处输入图像描述

演示代码并没有深入了解这个问题,它只是对 UIViewRepresentable 视图的调用。我在这里将其简化为一个示例:

在此处输入图像描述

请注意,我在控件之前有一个带 Spacer() 的 VStack。

此示例所需的行为是带有“First”、“Second”等的条紧贴屏幕底部。相反,主机控制器保留了所有空间......

我是否需要使用几何阅读器来解决这个问题并缩小高度。还是我必须在 UIViewRepresentable 视图中调整一些东西?

任何关于桥接 UIKit 和 SwiftUI 的见解都会受到赞赏......这是一个简单的解决方案吗?

这些并没有解决我的问题: UIViewRepresentable content not updates

如何让 SwiftUI UIViewRepresentable 视图拥抱它的内容?

如何根据内容调整 UITextView 的大小?

0 投票
2 回答
982 浏览

ios - UIViewRepresentable 隐藏在 SwiftUI 视图后面

我最近询问(并得到了有效答案)与此问题相关的问题。

如何让我的 UIViewRepresentable 正确调整其内容的大小?

正如我在上一篇文章中提到的,我想在我的 SwiftUI 视图中使用由 Yonat Sharon 编写的很棒的 MultiSegmentPicker。

https://github.com/yonat/MultiSelectSegmentedControl

实施答案表明我还没有走出困境。

截屏

请注意,该栏位于“底部”文本视图的后面

在我的非演示视图中,它完全隐藏在其他视图后面 - 所以它根本不可见。

我知道这是一个约束问题,Xcode 视图调试有助于确认:

运行时:布局问题:MultiSelectSegmentedControl 的位置不明确。

我在哪里解决这个问题?是否在 UIViewRepresentable 中的行为不像我预期的那样?由于该软件包已经存在多年,并且纯 UIKit 代码不会遇到此问题,我很确定问题出在 UIViewRepresentable 代码中。

在 MultiSelectSegmentedControl 的初始化中是以下设置代码:

MultiSegmentPicker: UIViewRepresentable的 init 中,我发现以下与约束相关的代码:

此外,分段视图MultiSelectSegment: UIView 使用以下代码:

这是演示上述问题的代码:

我对这段代码的期望是,带有“First”、“Second”等的条将位于底部的中心,而不是推到后缘,并且它会在显示“底部”的文本视图的上方而不是后面

=== 编辑 === 这是删除了垫片并删除了 .center 对齐的视图。

看到差异可能会有所帮助...

在此处输入图像描述

=== 编辑 2 ==

我想表现出更多“意外”的行为。仔细想想,一点也不意外。多选器的位置正确,但被更大的视图隐藏了。当我在 Multiselector 之后添加一个常规 Picker() 对象时,multiselector 会窥视...但这两张图片说明了很多:

在此处输入图像描述

在此处输入图像描述

== 编辑 3 ==

Yonat 已经修复了这个错误,它现在可以正常工作了!(谢谢!)

在此处输入图像描述

0 投票
1 回答
465 浏览

swiftui - 如何在 SwiftUI 中使 UIViewRepresentable 在 tvOS 上具有焦点?

标题说明了一切 - 我无法专注UIViewRepresentable于 tvOS 上的 SwiftUI。任何符合View协议的视图都可以毫无问题地聚焦,但既UIViewRepresentable不能也UIViewControllerRepresentable不能。

有任何想法吗?

此代码有效:

这个没有:

谢谢!

0 投票
2 回答
273 浏览

swiftui - SwiftUI如果从工作表视图更新时如何更新State属性

我有一个文本字段,您可以在其中输入姓名和一个按钮以从联系人中进行选择,但是当我从联系人中选择时,文本字段不会更新并且看起来是空的(并保存空结果),但是当我再次按下按钮时,它会更新文本字段,一旦关闭工作表,我如何更新 texfield

0 投票
1 回答
128 浏览

view - 在 userContentController 中启动/更新视图 - 功能

我尝试通过单击按钮在 WKWebview 的帮助下启动第二个视图。它也有效。我在函数 userContentController 中得到一个回调。如何通过此功能在应用程序中启动新视图。

0 投票
3 回答
3871 浏览

swiftui - 如何在 SwiftUI 列表中以正确的高度呈现多行文本?

我想要一个显示多行文本的 SwiftUI 视图,具有以下要求:

  • 适用于 macOS 和 iOS。
  • 显示大量字符串(每个字符串由单独的模型对象支持)。
  • 我可以对多行​​文本进行任意样式设置。
  • 每个文本字符串可以是任意长度,可能跨越多行和多段。
  • 每个文本字符串的最大宽度固定为容器的宽度。高度根据文本的实际长度而变化。
  • 每个单独的文本都没有滚动,只有列表。
  • 文本中的链接必须是可点击/可点击的。
  • 文本是只读的,不一定是可编辑的。

感觉最合适的解决方案是拥有一个列表视图,包装原生 UITextView/NSTextView。

这是我到目前为止所拥有的。它实现了大多数要求,除了具有正确的行高度。

这是它在 iOS 上输出的内容。macOS 输出类似。

iOS 输出

如何获得此解决方案来调整具有正确高度的文本视图?

我尝试过但未在此处显示的一种方法是给出“从外到内”的高度 - 用框架指定列表行本身的高度。当我知道宽度时,我可以计算 NSAttributedString 的高度,这可以通过 geoReader 获得。这几乎可以工作,但是有问题,而且感觉不对,所以我不在这里展示它。

0 投票
0 回答
210 浏览

swiftui - SwiftUI - 监听位置权限的授权状态

我正在使用 SwiftUI 使用 UIViewRepresentable 呈现地图,并使用 CLLocationManager 获取坐标。因此,在 updateUIView 中,我请求授权并检查授权状态以显示用户的位置,但由于代码在用户选择是否允许或拒绝权限之前运行,因此第一次未确定授权状态。通常,我会使用 CLLocation 的委托来监听权限更改,但我不知道如何在 SwiftUI 中实现这一点,因为 UIViewRepresentable 仅适用于结构。

0 投票
0 回答
47 浏览

ios - UICollectionView 不会立即注册长按

我在应用程序的 UIViewRepresentable 中使用 UICollectionView。我正在尝试在 UICollectionView 上注册一个长按手势,最小按下持续时间为 0 或非常接近 0,但在事件激活之前按下持续等待大约 0.5 秒

到目前为止我尝试过的 1:在 UIViewRepresentable 的 makeView 函数中,将返回的 UICollectionView 的 delaysContentTouches 设置为 false :
uiCollectionView.delaysContentTouches = false

2:将 LongPressGesture 的 delaysTouchesBegan 设置为 false,并将最小按下持续时间设置为 0 或 0.001 lp.delaysTouchesBegan = false lp.minimumPressDuration = 0.0' ///or to 0.001

3:继承 UICollectionView 并添加以下单个方法覆盖

} 最后是 4:在我的子类 UICollectionViewCell 中使用相同的覆盖函数覆盖,尽管老实说,在那一点上我正抓着稻草。

关于如何让这个长按立即生效的任何想法?

0 投票
0 回答
165 浏览

swiftui - PKCanvasView 上的手指和铅笔宽度不同

我正在尝试构建一个能够同时使用苹果铅笔和手指输入进行绘图的应用程序。但是,当我将工具的宽度设置为足够小的数字 (1) 时,铅笔输入会正确显示,但是当我使用手指时,它会画出更粗的线条。在铅笔和手指之间切换时,我希望宽度均匀。任何帮助,将不胜感激。Bellow 是最小的可重现代码。