相关疑难解决方法(0)

什么使SwiftUI的DSL成为可能?

苹果的新SwiftUI框架似乎使用了一种新型语法,可以有效地构建元组,但又具有另一种语法:

var body: some View {
    VStack(alignment: .leading) {
        Text("Hello, World") // No comma, no separator ?!
        Text("Hello World!")
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试解决这种语法的实际含义时,我发现VStack此处使用的初始化程序将类型的闭包() -> Content 作为第二个参数,其中Content的通用参数View是通过闭包推断的。为了找出要Content推断的类型,我对代码进行了一些更改,并保持了其功能:

var body: some View {
    let test = VStack(alignment: .leading) {
        Text("Hello, World")
        Text("Hello World!")
    }

    return test
}
Run Code Online (Sandbox Code Playgroud)

这样,就test表明自己是类型的VStack<TupleView<(Text, Text)>>,即Content是类型的TupleView<Text, Text>。向上看TupleView,我发现它是一个源自SwiftUI自身的包装器类型,只能通过传递应该包装的元组来初始化。

现在,我想知道Text这个示例中的两个实例如何转换为TupleView<(Text, Text)>。这被黑入 …

swift swiftui

66
推荐指数
2
解决办法
4895
查看次数

如何在 SwiftUI 中使用 UIViewController 和 UIView?

我曾尝试将自定义 UIViewController 集成到 Swift 应用程序中,但无法将其与 Text() 等 SwiftUI 元素集成。我收到此错误:函数声明了一个不透明的返回类型,但其主体中没有可从中推断基础类型的返回语句。我应该使用 UIView 而不是 UIViewController 吗?

uikit ios swift swiftui xcode11

6
推荐指数
1
解决办法
1万
查看次数

如何在SwiftUI中访问视图的修改器?

假设我有一个ViewImage具有shadow特性:

struct ContentView: View {
    var body: some View {
        let myImage = Image("turtlerock").shadow(radius: 10)

        return myImage
    }
}
Run Code Online (Sandbox Code Playgroud)

现在想象我要访问阴影半径的值。我以为我可以做到这一点:

print(myImage.shadow.radius)
Run Code Online (Sandbox Code Playgroud)

但是,这将返回错误:

类型'(颜色,长度,长度,长度)-> _ModifiedContent <_ModifiedContent,_ShadowEffect>'的值(aka'(颜色,CGFloat,CGFloat,CGFloat)-> _ModifiedContent <_ModifiedContent,_ShadowEffect>')没有成员'radius'

有没有办法访问修饰符?

swift swiftui

3
推荐指数
1
解决办法
254
查看次数

标签 统计

swift ×3

swiftui ×3

ios ×1

uikit ×1

xcode11 ×1