问题标签 [viewmodifier]

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 回答
64 浏览

swiftui - macCatalyst 应用程序构建但不会在 Mac 上启动

我正在设计一个 swiftUi 应用程序,它可以在 iOS 14 模拟器和设备上无缝运行,但无法在 Mac (10.15.7) 上启动。该应用程序构建没有问题,然后我在控制台中有这个:

dyld:找不到符号:_$s7SwiftUI20_ValueActionModifierVMn 引用自:/Users/me/Library/Developer/Xcode/DerivedData/myapp-gzynpflipftikkauzulvrrrxaniv/Build/Products/Debug-maccatalyst/myapp.app/Contents/MacOS/myapp(已构建适用于 Mac OS X 14.0)

预期在:/System/iOSSupport/System/Library/Frameworks/SwiftUI.framework/Versions/A/SwiftUI 在 /Users/me/Library/Developer/Xcode/DerivedData/myapp-gzynpflipftikkauzulvrrrxaniv/Build/Products/Debug-maccatalyst/myapp .app/Contents/MacOS/myapp (lldb)

知道这是指什么吗?谢谢!

0 投票
1 回答
126 浏览

swiftui - Swiftui Scrollview Viewmodifier 适用于所有 Scrollview

我已经为 Swiftui 的滚动视图实现了一个 viewmodifier,以禁用内置滚动,以允许应用自定义拖动手势。修饰符效果很好。

问题是 viewmodifier 被应用于应用程序中的其他滚动视图,而不仅仅是那些以 .modifier 为目标的滚动视图!我尝试了简单的可能解决方案,例如滚动视图的唯一 ID,但无济于事。

有谁知道这种行为是否可以修复?

非常感谢

0 投票
0 回答
100 浏览

swift - 如何在 SwiftUI 中访问另一个 CoordinateSpace 的 safeAreaInsets

我正在尝试编写一个视图扩展,ViewModifier它允许我将任何视图定位在CoordinateSpace另一个视图中。到目前为止,我的代码确实有效,但如果 CoordinateSpaces 之一具有安全区域,它会出现对齐问题。我可以通过添加.edgesIgnoringSafeArea(.all)到目标来修复它,CoordinateSpace但我想使用这个扩展而不必担心其他坐标系统的安全区域。

澄清我的代码:

在我的代码中,第一个圆圈在 a 内HStackGeometryReader并且设置了一个CoordinateSpace被调用的"otherSpace"。另一个 HStack 中的圆圈根据 中的位置设置其位置"otherSpace"。第一个HStack并且GeometryReader在顶部,并且有edgeInset20 个顶部。第二个没有。查看GeometryProxy(中ViewModifier)给我的值,我找不到一种方法来确定是否有一种方法来计算边缘插入。

到目前为止,这是我的代码:

更新图像。

第一张图片显示了.edgesIgnoringSafeArea(.all)在目标圆上使用时的结果。无论目标圆(CoordinateSpace)是否有安全区域,我都想得到这个结果。但是当我删除时,.edgesIgnoringSafeArea(.all)我得到了第二张图像,因为我的扩展不知道是否有安全区域,并且总是计算好像没有安全区域。

在此处输入图像描述 在此处输入图像描述

0 投票
2 回答
122 浏览

swift - 为什么视图修饰符不能接受不可变变量?

我做了一个按钮修饰符,背景颜色应该根据它是否被点击而改变。但我抱怨 viewModifier 的输入参数是不可变的。

我在btnBkColor上遇到错误

错误消息:

不能对不可变值使用变异 getter:'self' 是不可变的

这是我的简化代码:

修饰符:

我只在 ViewModifier 中获取但没有设置 btnBkColor,我不明白为什么输入参数不能是不可变的?

我尝试过但没有帮助的方法:

  • 将 let 更改为 var
  • 在 btnBkColor 前面添加 @State

非常感谢您提前。

0 投票
0 回答
65 浏览

swift - 将 ViewModifier 注入 SwiftUI 视图

当前情况
我在一个 iOS SDK 上工作,其中包含几个UIViewControllers可以通过委托函数自定义的,将 aString作为标识符传递并获取自定义的CALayer. 这样,宿主应用程序就可以自定义 SDK 的外观。

这是一个例子:

问题
如今,我正在尝试将代码迁移到 SwiftUI 和 Combine。但是我找不到一种方法来提供主机应用程序来注入它们自己的属性。据我了解,ViewModifier结构体用于将自定义属性应用于View(s)SwiftUI 中的一个或多个。但是,我还没有找到将它们注入 SDK 的方法,因为ViewModifier协议具有 Self 或关联的类型要求

我感谢任何帮助和指导。

0 投票
1 回答
73 浏览

swiftui - 如何制作一个接受任何对象的 swiftui viewmodifier?

我的项目中有很多可重用的视图修改器,但我从来没有能够制作一个接受任何对象而不是特定对象的视图修改器。

外汇。在下面的 viewmodifier 中,我如何让它接受任何对象而不仅仅是“StopContent”,这样我每次想在新对象上使用它时就不必编写新的 viewModifier?

0 投票
0 回答
513 浏览

ios - 覆盖在 SwiftUI 选项卡视图前面

我正在使用 SwiftUI TabView,我想添加一个自定义bottomSheet()修饰符,它接受一个视图并像标准sheet()修饰符一样显示它,但不占用整个屏幕。

当前行为:我设法创建了自定义修饰符并显示了一个工作表,但工作表出现在底部选项卡栏的后面(因为它是从内部显示的NavigationView)。

预期行为:我正在寻找一种方法来用前面的工作表覆盖标签栏。

在此处输入图像描述

最小可重现示例

这是我创建的自定义修饰符。

这是我使用它的方式。

0 投票
0 回答
61 浏览

ios - 如何在 SwiftUI 中模糊视图的一部分

我想在 SwiftUI 中模糊相机视图的一部分。像一个模糊的框架。

我的想法是为相机视图创建一个修改器,如下面的代码中的修改器。但是,当我应用修改器时,模糊的内容content.blur(radius: 7)也会被剪裁

你能帮我理解为什么这不起作用吗?

编辑:

我想补充一点,我能够通过使用UIVisualEffectView. 在我的 github 中查看解决方案

但是,我仍然希望仅使用纯 SwiftUI 来实现相同的目标,如果您能指出正确的方向,我将不胜感激。谢谢你。

0 投票
2 回答
263 浏览

swift - 每次视图出现时,SwiftUI .onAppear withAnimation 都会加快速度。为什么?

我的应用程序中有正在进行的动画,这些动画是使用更新属性触发onAppear和配置的。withAnimation@State

每次视图出现时,动画都会比以前快一点,所以如果视图被显示,然后被模态显示覆盖或隐藏在导航中,然后再次出现,动画开始运行非常非常快——可能是 10 或 20比它应该的要快几倍。

这是代码...

知道每次视图重新出现时导致加速的原因吗?有什么建议可以解决这个问题吗?

(注意:这是运行 Xcode 13.0 beta 4)

0 投票
2 回答
81 浏览

swiftui - SwiftUI:自定义视图修饰符不符合 ViewModifier?

我正在尝试创建此修饰符:

当我这样做时,我得到Type 'CustomTextBorder' does not conform to protocol 'ViewModifier'错误。

看来我必须添加:

typealias Body = <#type#>

但是,我看到修改器就像我最初在这里所做的那样创建,而无需提供typealias Body...

这个修饰符在这里工作:

https://www.simpleswiftguide.com/how-to-make-custom-view-modifiers-in-swiftui/

为什么它对我不起作用?

我怎样才能使这个修饰符起作用?为什么它对某些人有效而对其他人无效?这是否取决于项目的目标?我的目标是 iOS 15。