微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在SwiftUI中,我有两种包装Shape的结构,一种有效,一种没有,但我看不出两者的功能差异

如何解决在SwiftUI中,我有两种包装Shape的结构,一种有效,一种没有,但我看不出两者的功能差异

我包装了两个Shape结构。一种有效,另一种可以编译并运行-但始终在屏幕上呈现空白区域。但是,我没有看到这两种结构在功能上有任何主要区别……<IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" Header set Access-Control-Allow-Headers "Origin,X-Requested-With,Content-Type,Accept" </IfModule> 有何不同之处,可防止其将形状呈现为视图?

AnyShape_AlwaysBlank

解决方法

在第一种情况下,当调用path(in rect: CGRect) -> Path时,它实际上使用传递的rect来创建Path

在第二种情况下,您使用Path(它是一个空的CGRect())创建了CGRect,因此返回的路径是适合于空{{1} }。然后,在调用rect时,您将忽略path(in rect: CGRect) -> Path参数,而只返回预先创建的rect


另一种方法是使结构通用,然后存储Path

Shape

注意::如果您想使用struct AnyShape<S: Shape>: Shape { private let someShape: S // required to conform to Shape public func path(in rect: CGRect) -> Path { someShape.path(in: rect) } init(_ someShape: S) { self.someShape = someShape } } 将所有AnyShape统一为一个类型,则此 Generic 版本不会这样做是因为它为每种输入形状返回了不同的类型:Shape的{​​{1}},AnyShape<Circle>的{​​{1}}等。在这种情况下,我会坚持使用Circle使用闭包来捕获AnyShape<Rectangle>,或者如果您希望从函数返回多个Rectangle类型,则可以将AnyShape设为Shape

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。