相关疑难解决方法(0)

文本或图像等视图类型如何符合SwiftUI中的视图协议?

关于SwiftUI中的视图类型,有一件大事让我感到困惑

它们似乎不符合该View协议,但是某种程度上,它们却神秘地遵循了该协议。

Text类型为例。它的定义如下:

public struct Text : Equatable { ... }
Run Code Online (Sandbox Code Playgroud)

我找不到任何能增加View协议一致性的公共扩展,例如

extension Text: View { ... }
Run Code Online (Sandbox Code Playgroud)

官方文档中的“ 关系”部分仅指出:

符合: 平等

仅此而已。

但是,我可以返回一个需要Text一些实例的实例View,例如:

var body: some View {
    Text("I'm a View, I swear!") 
}
Run Code Online (Sandbox Code Playgroud)

如果Text不符合View,则将无法执行并引发编译器错误。

some View是一种不透明的结果类型,表示它是具有身份的特定类型,但符合View。)

那怎么可能呢?

在哪里View指定协议一致性SwiftUI视图类型(如TextImageCircle,...)?

view ios swift swiftui opaque-result-type

9
推荐指数
1
解决办法
424
查看次数

SwiftUI 上下文菜单是否使用 LayoutConstraints?

我假设 SwiftUI 不再使用 NSLayoutContstraints。但是我在控制台中收到约束错误。任何人都知道如何调试?

当我打开上下文菜单时,如果使用列表视图,则会打印出以下内容:

2019-12-09 10:52:52.029091-0700 ContextMenuTest[26384:13138419] [LayoutConstraints] 无法同时满足约束。可能以下列表中的至少一项约束是您不想要的。试试这个: (1) 查看每个约束并尝试找出您不期望的;(2) 找到添加不需要的约束或约束的代码并修复它。(注意:如果看到 NSAutoresizingMaskLayoutConstraints 不明白,请参考 UIView 属性 translatesAutoresizingMaskIntoConstraints 的文档) ( "", "= 44 (active, names: groupView.actionsSequence...:0x7fd98781de00 )>", "", "", "", "" )

将尝试通过打破约束 = 44(活动,名称:groupView.actionsSequence...:0x7fd98781de00)来恢复>

在 UIViewAlertForUnsatisfiableConstraints 处创建一个符号断点以在调试器中捕获它。中列出的 UIView 上的 UIConstraintBasedLayoutDebugging 类别中的方法也可能会有所帮助。

struct ContentView: View {
    var body: some View {
        List {
            Text("one")
            Text("two")
                .contextMenu(menuItems: {
                    Text("test")
                })
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

swiftui

8
推荐指数
1
解决办法
669
查看次数

标签 统计

swiftui ×2

ios ×1

opaque-result-type ×1

swift ×1

view ×1