Apple在Xcode 11 beta 5中破坏了Path
:
使用
Path
结构时,Xcode 11 beta 5中的一个已知问题导致您的应用崩溃。
因此,我正在尝试使用CGMutablePath
解决此问题:
var body: some View {
GeometryReader { geometry in
let path = CGMutablePath()
path.addRect(CGRect(x: 0, y: 0, width: 100, height: 100))
return Path(path)
}
}
这画了一个正方形。
当我尝试如下更改颜色时:
var body: some View {
GeometryReader { geometry in
let path = CGMutablePath()
path.addRect(CGRect(x: 0, y: 0, width: 100, height: 100))
return Path(path).fill(Color.purple)
}
}
我得到:
Cannot convert return expression of type 'GeometryReader<_>' to return type 'some View'
Function declares an opaque return type, but has no return statements in its body from which to infer an underlying type
我不确定要使用哪种返回类型?我尝试了Path
,但显然fill
不会再返回另一个Path
。
我尝试了View
,但得到了:
Protocol 'View' can only be used as a generic constraint because it has Self or associated type requirements
我尝试了some View
,但它似乎都没有解析。
答案 0 :(得分:3)
iOS 13 beta 7发行说明说它已在Xcode 11 beta 6中修复,因此我们只需要等待它发布即可。希望明天!
已解决的问题
如果您使用的是Xcode 11 beta 6及更高版本中包含的SDK,则使用Path结构不再会导致您的应用崩溃。 (53523206)
答案 1 :(得分:0)
它仍然会崩溃...路径太断了!但是,如果您对如何成功进行编译感到好奇,则可以执行以下操作:
struct MyShape: View {
@State private var flag = false
var body: some View {
return GeometryReader { (geometry) -> AnyView in
let path = CGMutablePath()
path.addRect(CGRect(x: 0, y: 0, width: 100, height: 100))
return AnyView(Path(path).fill(Color.purple))
}
}
}
它将在路径(路径)上崩溃