如何解决在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 举报,一经查实,本站将立刻删除。