小编Dev*_*r-1的帖子

从函数返回 SwiftUI(转换)路径的问题

我正在开发一个自定义的 SwiftUI 按钮,它根据配置具有特殊的形状。

实用程序函数必须根据配置返回一个Shape。由于路径/形状编程复杂,因此使用变换来获得取决于配置的变化。

出于演示目的,效用函数的简化版本如下所示:

func shape(i: Int) -> some Shape {

        let path = Path()

        switch i {
        case 0:
            return path
        case 1:
            return path.transform(CGAffineTransform(translationX:0,y:0))
        default:
            break
        }

        return path
    }
Run Code Online (Sandbox Code Playgroud)

不幸的是,编译器产生了众所周知的错误:

Function declares an opaque return type, but the return statements in its body do not have matching underlying types
Run Code Online (Sandbox Code Playgroud)

我确信这是由于转换而发生的,尽管它返回一个结构

func transform(_ transform: CGAffineTransform) -> TransformedShape<Self>
Run Code Online (Sandbox Code Playgroud)

符合 Shape(就像 Path 一样):

struct TransformedShape<Content> where Content : Shape
Run Code Online (Sandbox Code Playgroud)

Path 的文档说明 Path 符合 Shape,这让我觉得我忽略了某些东西,或者这可能是编译器中的错误。

如果有人知道解决方法或可以看到我做错了什么 - 请告诉我。 …

swift swiftui

5
推荐指数
1
解决办法
133
查看次数

为什么赋值后状态会重置为nil

在一个简单的 SwiftUI 应用程序中,我正在尝试在单击列表中的行时显示工作表。当工作表打开时,已为状态变量分配了单击的列表对象。请参阅下面的代码。

由于某种未知的原因,状态变量为零,当工作表打开时?

我是否误解了 SwiftUI 的某些内容或忘记了有关状态变量的内容。我希望有人能启发我。


import SwiftUI

struct ContentView: View {
    
    class Object: Identifiable {
        let id: String
        init(_ id: String) { self.id = id }
    }
    
    let collection = [Object("1"),Object("2"),Object("3")]
    
    @State var show = false
    @State var state: Object?
    
    var body: some View {
        
        List(collection) { item in
            
            HStack{ Text(item.id); Spacer() }
                .background(Color.white)
                .onTapGesture(count:1, perform: {
                    self.state = item
                    show.toggle()
            })
        }
        .sheet(isPresented:$show) {
            if state == nil {
                Text("Error state == nil ?")
            }
            else { …
Run Code Online (Sandbox Code Playgroud)

swiftui

4
推荐指数
1
解决办法
1329
查看次数

标签 统计

swiftui ×2

swift ×1